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

Lisp tính diện tích và chèn giá trị vào vòng tròn ký hiệu

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

http://www.cadviet.com/upfiles/Dientich.zip

 

Tặng các bác làm quy họach cái này dùng chơi

Lệnh là DSA hoặc SA

Vợ về bên ngọai nên rãnh rỗi viết cái này tặng anh em bên Quy họach dùng chơi

 

"Mình ơi, anh nhớ mình quá"

 

Còn đây là Code

 

DIENTICH.LSP

;Chuong trinh tinh va ghi dien tich
;Author Vo Kien Cuong

(DEFUN DIENTICH(/ DCL_ID_DIENTICH dt)  
 (setq DCL_ID_DIENTICH (load_dialog "DIENTICH.DCL"))
 (if (not(new_dialog "DIENTICH" DCL_ID_DIENTICH)) (exit))  
 (action_tile "BACK_key" "(CHANGE_SLIDE 0)")
 (action_tile "NEXT_key" "(CHANGE_SLIDE 1)")
 (action_tile "OPT_key" "(OPTION)")
 (action_tile "info" "(ABOUT)")
 (action_tile "accept" "(GETVALUE_DT) (done_dialog 1)")
 (action_tile "TK_key" "(GETVALUE_DT) (done_dialog 2)")  
 (SETVALUE_DT)
 (setq RES_DT (start_dialog))
 (if (= RES_DT 1)
(progn
  (if (= Is_Obj "1")
	(setq dt (GETOBJECT))
(setq dt (GETPOINTS))
  )
  (WRITEDIENTICH dt)
  (DIENTICH) 
)
 )
 (if (= RES_DT 2)
(progn
  (KHOILUONG) 
  (DIENTICH) 
)
 )
 (unload_dialog DCL_ID_DIENTICH) 
)

(DEFUN TINHDIENTICH(dt / s)
 (Command "AREA" "O" dt)
 (setq s (getvar "AREA"))
 (If (= DVDT "1")
(setq s (/ s 10000))
 )
 s
)

(DEFUN WRITEDIENTICH(dt / s Pnt blkName)
 (setq Pnt Nil)
 (setq s (TINHDIENTICH dt))
 (setq ds (Fix (* s (atof MDDS))))
 (if (= DVDS "1")
(setq ds (/ ds 1000))
 )  
 (while (Null Pnt)
(setq Pnt (Getpoint "Chon diem chen Block "))
 )  
 (setq kh (getString "\nNhap ky hieu: "))  
 (setq blkName (nth (- i_sld 1) Li_sld))  
 (command "-INSERT" blkName "S" TLSC Pnt "0" kh (rtos s 2 2) (itoa ds))
)

(DEFUN IMAGE_SLIDE(/ sld_name)
 (setq sld_name (nth (- i_sld 1) Li_sld))
 (start_image "IMAGE_key")
 (fill_image 0 0 (dimx_tile "IMAGE_key") (dimy_tile "IMAGE_key") -15)
 (slide_image 5 0 (dimx_tile "IMAGE_key") (dimy_tile "IMAGE_key") sld_name)
 (end_image)
)

(DEFUN C:DSA()
 (setvar "CMDECHO" 0)
 (terpri)  
 (DT_INIT)  
 (DIENTICH)
 (setvar "CMDECHO" 1)
)

(DEFUN C:SA()
 (setvar "CMDECHO" 0)
 (terpri)  
 (DT_INIT)  
 (if (= Is_Obj "1")
 (setq dt (GETOBJECT))
 (setq dt (GETPOINTS))
 )  
 (WRITEDIENTICH dt)	   
 (setvar "CMDECHO" 1)
)

(DEFUN DT_INIT()
 (setq Li_sld (List "Blk001" "Blk002" "Blk003" "Blk004"))
 (if (Null i_sld)
(setq i_sld 1)
 )
 (CREALILA)  
 (if (Null Is_Obj)
(setq Is_Obj "1")
 )
 (if (Null Is_Pnt)
(setq Is_Pnt "0")
 )
 (if (Null IsCuLa_DT)
(setq IsCuLa_DT "1")
 )  
 (if (Null IsSetLa_DT)
(setq IsSetLa_DT "0")
 )
 (if (Null la_DT)
(setq la_DT "0")
 )
 (if (Null Is_DVDT)
(setq Is_DVDT "0")
 )
 (if (Null Is_DVDS)
(setq Is_DVDS "0")
 )
 (setq Li_DT (List "m2" "ha"))
 (If (Null DVDT)
(setq DVDT "1")
 )  
 (setq Li_DS (List "1" "1000"))
 (If (Null DVDS)
(setq DVDS "1")
 )
 (If (Null MDDS)
(setq MDDS "100")
 )
 (If (Null TLSC)
(setq TLSC "1")		
 )  
)

(DEFUN CHANGE_SLIDE(n)
 (if (= n 0)
(progn
  (if (= i_sld 1)
(setq i_sld 4)
(setq i_sld (- i_sld 1))
  )
)
 )
 (if (= n 1)
(progn
  (if (= i_sld 4)
(setq i_sld 1)
(setq i_sld (+ i_sld 1))
  )
)
 )
 (IMAGE_SLIDE)
)

(DEFUN OPTION (/ DCL_ID_DIENTICH_OPT)  
 (setq DCL_ID_DIENTICH_OPT (load_dialog "DIENTICH.DCL"))
 (if (not (new_dialog "OPTION" DCL_ID_DIENTICH_OPT))(exit))
 (action_tile "IsCuLA_DT" "(Is_Chk_La)")
 (action_tile "IsSetLA_DT" "(Is_Chk_La)")
 (action_tile "MD_DS" "(CHECKVALUE_MDDS)")
 (action_tile "TL_DT" "(CHECKVALUE_TLSC)")  
 (action_tile "accept" "(GETOPTVALUE_DT) (done_dialog 1)")
 (if (= IsSetLa_DT "1")
(mode_tile "La_DT" 0)
(mode_tile "La_DT" 1)
 )
 (start_list "La_DT")  
 (mapcar 'add_list LiLa)
 (end_list)
 (start_list "DV_DT")  
 (mapcar 'add_list Li_DT)
 (end_list)
 (start_list "DV_DS")  
 (mapcar 'add_list Li_DS)
 (end_list)
 (SETOPTVALUE_DT)	 
 (start_dialog)
 (unload_dialog DCL_ID_DIENTICH_OPT)  
)

(DEFUN SETVALUE_DT()
 (IMAGE_SLIDE)
 (set_tile "DT_OBJ" Is_Obj)
 (set_tile "DT_PNT" Is_Pnt)  
)

(DEFUN GETVALUE_DT()
 (setq Is_Obj (get_tile "DT_OBJ"))
 (setq Is_Pnt (get_tile "DT_PNT"))  
)

(DEFUN SETOPTVALUE_DT()  
 (set_tile  "IsCuLA_DT" IsCuLa_DT)  
 (set_tile "IsSetLA_DT" IsSetLa_DT)	
 (set_tile "La_DT" la_DT)
 (set_tile "Is_DVDT" Is_DVDT)
 (set_tile "Is_DVDS" Is_DVDS)
 (set_tile "DV_DT" DVDT)
 (set_tile "DV_DS" DVDS)
 (set_tile "MD_DS" MDDS)
 (set_tile "TL_DT" TLSC)
)

(DEFUN GETOPTVALUE_DT()
 (setq IsCuLa_DT (get_tile "IsCuLA_DT"))
 (setq IsSetLa_DT (get_tile "IsSetLA_DT"))  
 (setq la_DT (get_tile "La_DT"))
 (setq Is_DVDT (get_tile "Is_DVDT"))
 (setq Is_DVDS (get_tile "Is_DVDS"))
 (setq DVDT (get_tile "DV_DT"))
 (setq DVDS (get_tile "DV_DS"))
 (setq MDDS (get_tile "MD_DS"))
 (setq TLSC (get_tile "TL_DT"))
)

(DEFUN CREALILA (/ NL)
 (setq LiLa (List))
 (setq NL (tblnext "LAYER" T))  
 (while NL	
(setq LiLa (append LiLa (list (cdr (assoc 2 NL)))))
(setq NL (tblnext "LAYER"))
 )
 (setq LiLa (Acad_strlsort LiLa))
)

(DEFUN Is_Chk_La ()
 (if (= (get_tile "IsSetLA_DT") "1")
(mode_tile "La_DT" 0)
(mode_tile "La_DT" 1)
 )
)

(DEFUN CHECKVALUE_MDDS()
 (setq temp (get_tile "MD_DS"))
 (If (Not (IsNumeric temp))
(progn
  (alert "Gia tri nhap vao khong hop le")
  (set_tile "MD_DS" MDDS)
)
 )  
)

(DEFUN CHECKVALUE_TLSC()
 (setq temp (get_tile "TL_DT"))
 (If (Not (IsNumeric temp))
(progn
  (alert "Gia tri nhap vao khong hop le")
  (set_tile "TL_DT" TLSC)
)
 )  
)

(DEFUN GETOBJECT(/ ss dt)
 (setq ss Nil)
 (while (Null ss)
(princ "Chon doi tuong can tinh dien tich")
(setq ss (ssget))	
 )
 (setq dt (ssname ss 0))
 dt
)

(DEFUN GETPOINTS(/ ssLine Pnt1 Pnt2 dt)
 (setq ssLine (ssAdd))  
 (setvar "CMDECHO" 0)
 (princ "\nChon diem tren man hinh de tinh dien tich")
 (setq Pnt1 (Getpoint "\nChon diem dau tien:"))  
 (while (Not (Null Pnt1))
(setq Pnt2 (Getpoint Pnt1 "\nChon diem tiep theo"))
(if (AND (Not (NUll Pnt1)) (Not (NUll Pnt2)))
  (command "LINE" Pnt1 Pnt2 "")
)	
(setq dt (entlast))
(setq ssLine (ssAdd dt ssLine))	
(setq Pnt1 Pnt2)	
 )  
 (setq dt (ssname ssLine 0))  
 (command "PEDIT" dt "Y" "J" ssLine "" "")  
 (setvar "CMDECHO" 1)
 (setq dt (entlast))
 dt
)

(DEFUN ABOUT(/ DCL_ID_ABOUT)
 (setq DCL_ID_ABOUT (load_dialog "DIENTICH.DCL"))
 (if (not(new_dialog "ABOUT" DCL_ID_ABOUT))(exit))  
 (start_list "aboutme")
 (add_list " ")  
 (add_list "  VO KIEN CUONG - Bachelor of IT")
 (add_list "  =====================================================")
 (add_list "  Email : vkcuong_23@yahoo.com")
 (add_list "  Mobile: 0983616182 - 0977352125")
 (add_list "  CAD developer (LISP, DCL, VBA for AutoCad, ObjectARX...)")  
 (add_list "  ")
 (end_list)
 (start_dialog)
 (unload_dialog DCL_ID_ABOUT)
)

(DEFUN KHOILUONG( / ss LiKH LiDT LiDS n i chuoi ss)
 (setq LiKH Nil)
 (setq LiDT Nil)
 (setq LiDS Nil)
 (setq ss Nil)
 (princ "Chon nhom Block muon thong ke khoi luong")
 (setq ss (ssget))
 (setq n (sslength ss))
 (if (> n 0)
(progn
  (setq i 0)
  (while (< i n)
(setq dt (ssname ss i))
(if (OR (= (TENDOITUONG dt) "Blk001") (= (TENDOITUONG dt) "Blk002") (= (TENDOITUONG dt) "Blk003") (= (TENDOITUONG dt) "Blk004"))
  (progn
	(setq LiKH (Append LiKH (List (GetStringTag dt "KH"))))
	(setq LiDT (Append LiDT (List (GetStringTag dt "DT"))))
	(setq LiDS (Append LiDS (List (GetStringTag dt "DS"))))
  )
)
(setq i (1+ i))
  )
)  
 )
 (setq n (length LiKH))
 (If (> n 0)
(progn
  (setq i 0)
  (setq DCL_ID_KHOILUONG (load_dialog "DIENTICH.DCL"))
  (if (not(new_dialog "KHOILUONG" DCL_ID_KHOILUONG)) (exit))
  (start_list "li_KL")	  
  (add_list (strcat "  So Block: " (itoa n)))	  
  (add_list "  BANG KHOI LUONG")
  (add_list "  -------------------------------------------------------")
  (while (< i n)
(setq chuoi (strcat "  " (FIXLENGTH (nth i liKH) 15) (FIXLENGTH (nth i liDT) 15) (FIXLENGTH (nth i liDS) 15)))	
(add_list chuoi)
(setq i (1+ i))
  )
  (add_list "  -------------------------------------------------------")	  
  (end_list)
  (start_dialog)
  (unload_dialog DCL_ID_ABOUT)
)	
 )	
)

(DEFUN GetTag (objblock tag / temp1 att_list old)
 (setq temp1	objblock)
 (setq att_list (ENTGET temp1))
 (WHILE (NOT (= (CDR (ASSOC 2 att_list))tag))
(setq temp1	(ENTNEXT temp1))
(setq att_list (ENTGET temp1))
 )
 (setq old (CDR (ASSOC 1 att_list)))
)

(DEFUN GetStringTag (objblock tag / thtin)
 (setq thtin (GetTag objblock tag))
 thtin
)

(DEFUN IsNumeric (str / kq n1 n2 l)
 (setq kq Nil)
 (setq n1 0)
 (setq n2 0)
 (if (= (substr str 1 1)"-")
(setq str (substr str 2 (- (strlen str) 1)))
 )  
 (setq l (strlen str))
 (if (= (substr str 1 1)".")
(setq kq Nil)
(progn
  (setq i 1)
  (while (<= i l)
(setq a (substr str i 1))
(if (and (> (ascii a) 47) (< (ascii a) 58))
  (setq n1 (+ n1 1))
)
(if (= a ".")
  (setq n2 (+ n2 1))
)
(setq i (+ i 1))
  )
  (if (and (<= n2 1) (= (+ n2 n1)l))
(setq kq T)	
  )
)
 )
 kq
)

(DEFUN TENDOITUONG (obj / name)
 (if (/= (cdr (assoc 0 (entget obj))) "INSERT")
(setq name (cdr (assoc 0 (entget obj))))
(setq name (cdr (assoc 2 (entget obj))))
 )
 name  
)

(DEFUN FIXLENGTH(chuoi l / l1 chuoi1)  
 (setq chuoi1 chuoi)
 (setq l1 (strlen chuoi))
 (if (< l1 l)
(progn
  (while (< l1 l)
(setq chuoi1 (strcat chuoi1 " "))
(setq l1 (1+ l1))
  )	
)
(progn
  (setq chuoi1 (substr chuoi 1 l))
)
 )
 chuoi1  
)[/code]

 
DIENTICH.DCL
[code]//Form chuong trinh tinh Dien tich
//Author Vo Kien Cuong
DIENTICH:dialog	{
spacer_1;
label="CHUONG TRINH TINH DIEN TICH";	
:boxed_column	{
	label="Chon hinh anh block muon hien thi";
	:row	{
		:button	{
			label="<<";
			key="BACK_key";
			}
		:image_button	{
			key="IMAGE_key";
			width=14;
			height=7;				
			color=dialog_background;
			}
		:button	{
			label=">>";
			key="NEXT_key";
			}
		}		
	}
:row	{
	:boxed_column	{
		label="Cach tinh dien tich";
		:radio_button	{
			label="Chon doi tuong";
			key="DT_OBJ";
			}
		:radio_button	{
			label="Chon diem";
			key="DT_PNT";
			}		
		}
	:column	{
		spacer_1;
		spacer_1;
		:button	{
			label="Cai dat";
			key="OPT_key";
			}
		:button	{
			label="Khoi luong";
			key="TK_key";
			}			
		}
	}	
	spacer_0;
	:row	{
	ok_cancel;
	spacer_1;
	spacer_1;
	spacer_1;
	:button	{
		label="Author";
		key="info";
		}
	}
	}
OPTION:dialog	{
	spacer_1;
	label="Cac thong so cho block dien tich";
	:boxed_radio_column{
		label="Cai dat Layer";
		:radio_button{
			label="Su dung Layer hien huu";
			key="IsCuLA_DT"; 			
			}
		:radio_button{
			label="Cai dat Layer";
			key="IsSetLA_DT";
			}
		:popup_list{			
		key="La_DT";			
		}		
		}
	:boxed_column	{
		label="Hien thi"; 			
		:popup_list{
			label="Don vi dien tich";
			key="DV_DT";
			edit_width=8;
			}
		:toggle	{
			label="Hien thi don vi dien tich";
			key="Is_DVDT";
			is_enabled=false;
			}
		:popup_list{
			label="Don vi dan so";
			key="DV_DS";
			edit_width=8;
			}
		:toggle	{
			label="Hien thi don vi dan so";
			key="Is_DVDS";
			is_enabled=false;
			}
		:edit_box{
			label="Mat do dan so (N/DVDT):";
			key="MD_DS";
			edit_width=9;
			}
		:edit_box{
			label="He so Scale Block:";
			key="TL_DT";
			edit_width=9;
			} 	
		}
	spacer_1;
ok_cancel;
	}
ABOUT:dialog{
label="About me...";
spacer_1;
:list_box{				
	key="aboutme";
	width=55;
	height=9;
	}
ok_only;
}
KHOILUONG :dialog{
spacer_1;
label = "THONG KE KHOI LUONG";	
:list_box{
	key="li_KL";
	label="Thong ke khoi luong";
	height=15;
	width=45;
	}
spacer_1;
ok_only;
	}

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
http://www.cadviet.com/upfiles/Dientich.zip

 

Tặng các bác làm quy họach cái này dùng chơi

Lệnh là DSA hoặc SA

Vợ về bên ngọai nên rãnh rỗi viết cái này tặng anh em bên Quy họach dùng chơi

 

"Mình ơi, anh nhớ mình quá"

 

Còn đây là Code

 

DIENTICH.LSP

;Chuong trinh tinh va ghi dien tich
;Author Vo Kien Cuong

(DEFUN DIENTICH(/ DCL_ID_DIENTICH dt)  
 (setq DCL_ID_DIENTICH (load_dialog "DIENTICH.DCL"))
 (if (not(new_dialog "DIENTICH" DCL_ID_DIENTICH)) (exit))  
 (action_tile "BACK_key" "(CHANGE_SLIDE 0)")
 (action_tile "NEXT_key" "(CHANGE_SLIDE 1)")
 (action_tile "OPT_key" "(OPTION)")
 (action_tile "info" "(ABOUT)")
 (action_tile "accept" "(GETVALUE_DT) (done_dialog 1)")
 (action_tile "TK_key" "(GETVALUE_DT) (done_dialog 2)")  
 (SETVALUE_DT)
 (setq RES_DT (start_dialog))
 (if (= RES_DT 1)
(progn
  (if (= Is_Obj "1")
	(setq dt (GETOBJECT))
(setq dt (GETPOINTS))
  )
  (WRITEDIENTICH dt)
  (DIENTICH) 
)
 )
 (if (= RES_DT 2)
(progn
  (KHOILUONG) 
  (DIENTICH) 
)
 )
 (unload_dialog DCL_ID_DIENTICH) 
)

(DEFUN TINHDIENTICH(dt / s)
 (Command "AREA" "O" dt)
 (setq s (getvar "AREA"))
 (If (= DVDT "1")
(setq s (/ s 10000))
 )
 s
)

(DEFUN WRITEDIENTICH(dt / s Pnt blkName)
 (setq Pnt Nil)
 (setq s (TINHDIENTICH dt))
 (setq ds (Fix (* s (atof MDDS))))
 (if (= DVDS "1")
(setq ds (/ ds 1000))
 )  
 (while (Null Pnt)
(setq Pnt (Getpoint "Chon diem chen Block "))
 )  
 (setq kh (getString "\nNhap ky hieu: "))  
 (setq blkName (nth (- i_sld 1) Li_sld))  
 (command "-INSERT" blkName "S" TLSC Pnt "0" kh (rtos s 2 2) (itoa ds))
)

(DEFUN IMAGE_SLIDE(/ sld_name)
 (setq sld_name (nth (- i_sld 1) Li_sld))
 (start_image "IMAGE_key")
 (fill_image 0 0 (dimx_tile "IMAGE_key") (dimy_tile "IMAGE_key") -15)
 (slide_image 5 0 (dimx_tile "IMAGE_key") (dimy_tile "IMAGE_key") sld_name)
 (end_image)
)

(DEFUN C:DSA()
 (setvar "CMDECHO" 0)
 (terpri)  
 (DT_INIT)  
 (DIENTICH)
 (setvar "CMDECHO" 1)
)

(DEFUN C:SA()
 (setvar "CMDECHO" 0)
 (terpri)  
 (DT_INIT)  
 (if (= Is_Obj "1")
 (setq dt (GETOBJECT))
 (setq dt (GETPOINTS))
 )  
 (WRITEDIENTICH dt)	   
 (setvar "CMDECHO" 1)
)

(DEFUN DT_INIT()
 (setq Li_sld (List "Blk001" "Blk002" "Blk003" "Blk004"))
 (if (Null i_sld)
(setq i_sld 1)
 )
 (CREALILA)  
 (if (Null Is_Obj)
(setq Is_Obj "1")
 )
 (if (Null Is_Pnt)
(setq Is_Pnt "0")
 )
 (if (Null IsCuLa_DT)
(setq IsCuLa_DT "1")
 )  
 (if (Null IsSetLa_DT)
(setq IsSetLa_DT "0")
 )
 (if (Null la_DT)
(setq la_DT "0")
 )
 (if (Null Is_DVDT)
(setq Is_DVDT "0")
 )
 (if (Null Is_DVDS)
(setq Is_DVDS "0")
 )
 (setq Li_DT (List "m2" "ha"))
 (If (Null DVDT)
(setq DVDT "1")
 )  
 (setq Li_DS (List "1" "1000"))
 (If (Null DVDS)
(setq DVDS "1")
 )
 (If (Null MDDS)
(setq MDDS "100")
 )
 (If (Null TLSC)
(setq TLSC "1")		
 )  
)

(DEFUN CHANGE_SLIDE(n)
 (if (= n 0)
(progn
  (if (= i_sld 1)
(setq i_sld 4)
(setq i_sld (- i_sld 1))
  )
)
 )
 (if (= n 1)
(progn
  (if (= i_sld 4)
(setq i_sld 1)
(setq i_sld (+ i_sld 1))
  )
)
 )
 (IMAGE_SLIDE)
)

(DEFUN OPTION (/ DCL_ID_DIENTICH_OPT)  
 (setq DCL_ID_DIENTICH_OPT (load_dialog "DIENTICH.DCL"))
 (if (not (new_dialog "OPTION" DCL_ID_DIENTICH_OPT))(exit))
 (action_tile "IsCuLA_DT" "(Is_Chk_La)")
 (action_tile "IsSetLA_DT" "(Is_Chk_La)")
 (action_tile "MD_DS" "(CHECKVALUE_MDDS)")
 (action_tile "TL_DT" "(CHECKVALUE_TLSC)")  
 (action_tile "accept" "(GETOPTVALUE_DT) (done_dialog 1)")
 (if (= IsSetLa_DT "1")
(mode_tile "La_DT" 0)
(mode_tile "La_DT" 1)
 )
 (start_list "La_DT")  
 (mapcar 'add_list LiLa)
 (end_list)
 (start_list "DV_DT")  
 (mapcar 'add_list Li_DT)
 (end_list)
 (start_list "DV_DS")  
 (mapcar 'add_list Li_DS)
 (end_list)
 (SETOPTVALUE_DT)	 
 (start_dialog)
 (unload_dialog DCL_ID_DIENTICH_OPT)  
)

(DEFUN SETVALUE_DT()
 (IMAGE_SLIDE)
 (set_tile "DT_OBJ" Is_Obj)
 (set_tile "DT_PNT" Is_Pnt)  
)

(DEFUN GETVALUE_DT()
 (setq Is_Obj (get_tile "DT_OBJ"))
 (setq Is_Pnt (get_tile "DT_PNT"))  
)

(DEFUN SETOPTVALUE_DT()  
 (set_tile  "IsCuLA_DT" IsCuLa_DT)  
 (set_tile "IsSetLA_DT" IsSetLa_DT)	
 (set_tile "La_DT" la_DT)
 (set_tile "Is_DVDT" Is_DVDT)
 (set_tile "Is_DVDS" Is_DVDS)
 (set_tile "DV_DT" DVDT)
 (set_tile "DV_DS" DVDS)
 (set_tile "MD_DS" MDDS)
 (set_tile "TL_DT" TLSC)
)

(DEFUN GETOPTVALUE_DT()
 (setq IsCuLa_DT (get_tile "IsCuLA_DT"))
 (setq IsSetLa_DT (get_tile "IsSetLA_DT"))  
 (setq la_DT (get_tile "La_DT"))
 (setq Is_DVDT (get_tile "Is_DVDT"))
 (setq Is_DVDS (get_tile "Is_DVDS"))
 (setq DVDT (get_tile "DV_DT"))
 (setq DVDS (get_tile "DV_DS"))
 (setq MDDS (get_tile "MD_DS"))
 (setq TLSC (get_tile "TL_DT"))
)

(DEFUN CREALILA (/ NL)
 (setq LiLa (List))
 (setq NL (tblnext "LAYER" T))  
 (while NL	
(setq LiLa (append LiLa (list (cdr (assoc 2 NL)))))
(setq NL (tblnext "LAYER"))
 )
 (setq LiLa (Acad_strlsort LiLa))
)

(DEFUN Is_Chk_La ()
 (if (= (get_tile "IsSetLA_DT") "1")
(mode_tile "La_DT" 0)
(mode_tile "La_DT" 1)
 )
)

(DEFUN CHECKVALUE_MDDS()
 (setq temp (get_tile "MD_DS"))
 (If (Not (IsNumeric temp))
(progn
  (alert "Gia tri nhap vao khong hop le")
  (set_tile "MD_DS" MDDS)
)
 )  
)

(DEFUN CHECKVALUE_TLSC()
 (setq temp (get_tile "TL_DT"))
 (If (Not (IsNumeric temp))
(progn
  (alert "Gia tri nhap vao khong hop le")
  (set_tile "TL_DT" TLSC)
)
 )  
)

(DEFUN GETOBJECT(/ ss dt)
 (setq ss Nil)
 (while (Null ss)
(princ "Chon doi tuong can tinh dien tich")
(setq ss (ssget))	
 )
 (setq dt (ssname ss 0))
 dt
)

(DEFUN GETPOINTS(/ ssLine Pnt1 Pnt2 dt)
 (setq ssLine (ssAdd))  
 (setvar "CMDECHO" 0)
 (princ "\nChon diem tren man hinh de tinh dien tich")
 (setq Pnt1 (Getpoint "\nChon diem dau tien:"))  
 (while (Not (Null Pnt1))
(setq Pnt2 (Getpoint Pnt1 "\nChon diem tiep theo"))
(if (AND (Not (NUll Pnt1)) (Not (NUll Pnt2)))
  (command "LINE" Pnt1 Pnt2 "")
)	
(setq dt (entlast))
(setq ssLine (ssAdd dt ssLine))	
(setq Pnt1 Pnt2)	
 )  
 (setq dt (ssname ssLine 0))  
 (command "PEDIT" dt "Y" "J" ssLine "" "")  
 (setvar "CMDECHO" 1)
 (setq dt (entlast))
 dt
)

(DEFUN ABOUT(/ DCL_ID_ABOUT)
 (setq DCL_ID_ABOUT (load_dialog "DIENTICH.DCL"))
 (if (not(new_dialog "ABOUT" DCL_ID_ABOUT))(exit))  
 (start_list "aboutme")
 (add_list " ")  
 (add_list "  VO KIEN CUONG - Bachelor of IT")
 (add_list "  =====================================================")
 (add_list "  Email : vkcuong_23@yahoo.com")
 (add_list "  Mobile: 0983616182 - 0977352125")
 (add_list "  CAD developer (LISP, DCL, VBA for AutoCad, ObjectARX...)")  
 (add_list "  ")
 (end_list)
 (start_dialog)
 (unload_dialog DCL_ID_ABOUT)
)

(DEFUN KHOILUONG( / ss LiKH LiDT LiDS n i chuoi ss)
 (setq LiKH Nil)
 (setq LiDT Nil)
 (setq LiDS Nil)
 (setq ss Nil)
 (princ "Chon nhom Block muon thong ke khoi luong")
 (setq ss (ssget))
 (setq n (sslength ss))
 (if (> n 0)
(progn
  (setq i 0)
  (while (< i n)
(setq dt (ssname ss i))
(if (OR (= (TENDOITUONG dt) "Blk001") (= (TENDOITUONG dt) "Blk002") (= (TENDOITUONG dt) "Blk003") (= (TENDOITUONG dt) "Blk004"))
  (progn
	(setq LiKH (Append LiKH (List (GetStringTag dt "KH"))))
	(setq LiDT (Append LiDT (List (GetStringTag dt "DT"))))
	(setq LiDS (Append LiDS (List (GetStringTag dt "DS"))))
  )
)
(setq i (1+ i))
  )
)  
 )
 (setq n (length LiKH))
 (If (> n 0)
(progn
  (setq i 0)
  (setq DCL_ID_KHOILUONG (load_dialog "DIENTICH.DCL"))
  (if (not(new_dialog "KHOILUONG" DCL_ID_KHOILUONG)) (exit))
  (start_list "li_KL")	  
  (add_list (strcat "  So Block: " (itoa n)))	  
  (add_list "  BANG KHOI LUONG")
  (add_list "  -------------------------------------------------------")
  (while (< i n)
(setq chuoi (strcat "  " (FIXLENGTH (nth i liKH) 15) (FIXLENGTH (nth i liDT) 15) (FIXLENGTH (nth i liDS) 15)))	
(add_list chuoi)
(setq i (1+ i))
  )
  (add_list "  -------------------------------------------------------")	  
  (end_list)
  (start_dialog)
  (unload_dialog DCL_ID_ABOUT)
)	
 )	
)

(DEFUN GetTag (objblock tag / temp1 att_list old)
 (setq temp1	objblock)
 (setq att_list (ENTGET temp1))
 (WHILE (NOT (= (CDR (ASSOC 2 att_list))tag))
(setq temp1	(ENTNEXT temp1))
(setq att_list (ENTGET temp1))
 )
 (setq old (CDR (ASSOC 1 att_list)))
)

(DEFUN GetStringTag (objblock tag / thtin)
 (setq thtin (GetTag objblock tag))
 thtin
)

(DEFUN IsNumeric (str / kq n1 n2 l)
 (setq kq Nil)
 (setq n1 0)
 (setq n2 0)
 (if (= (substr str 1 1)"-")
(setq str (substr str 2 (- (strlen str) 1)))
 )  
 (setq l (strlen str))
 (if (= (substr str 1 1)".")
(setq kq Nil)
(progn
  (setq i 1)
  (while (<= i l)
(setq a (substr str i 1))
(if (and (> (ascii a) 47) (< (ascii a) 58))
  (setq n1 (+ n1 1))
)
(if (= a ".")
  (setq n2 (+ n2 1))
)
(setq i (+ i 1))
  )
  (if (and (<= n2 1) (= (+ n2 n1)l))
(setq kq T)	
  )
)
 )
 kq
)

(DEFUN TENDOITUONG (obj / name)
 (if (/= (cdr (assoc 0 (entget obj))) "INSERT")
(setq name (cdr (assoc 0 (entget obj))))
(setq name (cdr (assoc 2 (entget obj))))
 )
 name  
)

(DEFUN FIXLENGTH(chuoi l / l1 chuoi1)  
 (setq chuoi1 chuoi)
 (setq l1 (strlen chuoi))
 (if (< l1 l)
(progn
  (while (< l1 l)
(setq chuoi1 (strcat chuoi1 " "))
(setq l1 (1+ l1))
  )	
)
(progn
  (setq chuoi1 (substr chuoi 1 l))
)
 )
 chuoi1  
)[/code]

 
DIENTICH.DCL
[code]//Form chuong trinh tinh Dien tich
//Author Vo Kien Cuong
DIENTICH:dialog	{
spacer_1;
label="CHUONG TRINH TINH DIEN TICH";	
:boxed_column	{
	label="Chon hinh anh block muon hien thi";
	:row	{
		:button	{
			label="<<";
			key="BACK_key";
			}
		:image_button	{
			key="IMAGE_key";
			width=14;
			height=7;				
			color=dialog_background;
			}
		:button	{
			label=">>";
			key="NEXT_key";
			}
		}		
	}
:row	{
	:boxed_column	{
		label="Cach tinh dien tich";
		:radio_button	{
			label="Chon doi tuong";
			key="DT_OBJ";
			}
		:radio_button	{
			label="Chon diem";
			key="DT_PNT";
			}		
		}
	:column	{
		spacer_1;
		spacer_1;
		:button	{
			label="Cai dat";
			key="OPT_key";
			}
		:button	{
			label="Khoi luong";
			key="TK_key";
			}			
		}
	}	
	spacer_0;
	:row	{
	ok_cancel;
	spacer_1;
	spacer_1;
	spacer_1;
	:button	{
		label="Author";
		key="info";
		}
	}
	}
OPTION:dialog	{
	spacer_1;
	label="Cac thong so cho block dien tich";
	:boxed_radio_column{
		label="Cai dat Layer";
		:radio_button{
			label="Su dung Layer hien huu";
			key="IsCuLA_DT"; 			
			}
		:radio_button{
			label="Cai dat Layer";
			key="IsSetLA_DT";
			}
		:popup_list{			
		key="La_DT";			
		}		
		}
	:boxed_column	{
		label="Hien thi"; 			
		:popup_list{
			label="Don vi dien tich";
			key="DV_DT";
			edit_width=8;
			}
		:toggle	{
			label="Hien thi don vi dien tich";
			key="Is_DVDT";
			is_enabled=false;
			}
		:popup_list{
			label="Don vi dan so";
			key="DV_DS";
			edit_width=8;
			}
		:toggle	{
			label="Hien thi don vi dan so";
			key="Is_DVDS";
			is_enabled=false;
			}
		:edit_box{
			label="Mat do dan so (N/DVDT):";
			key="MD_DS";
			edit_width=9;
			}
		:edit_box{
			label="He so Scale Block:";
			key="TL_DT";
			edit_width=9;
			} 	
		}
	spacer_1;
ok_cancel;
	}
ABOUT:dialog{
label="About me...";
spacer_1;
:list_box{				
	key="aboutme";
	width=55;
	height=9;
	}
ok_only;
}
KHOILUONG :dialog{
spacer_1;
label = "THONG KE KHOI LUONG";	
:list_box{
	key="li_KL";
	label="Thong ke khoi luong";
	height=15;
	width=45;
	}
spacer_1;
ok_only;
	}

 

sao không chạy được Bác ơi !

Bác có thể hướng dẫn thêm được khô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
sao không chạy được Bác ơi !

Bác có thể hướng dẫn thêm được không.

 

 

Chương trình đưa lên đây mà không chạy được là bị bác NguyenHoanh chỉnh ngay nên chắc chắn là chạy được rồi.

Có thể bác không chạy được vì nó báo thiếu một vài cái DEFUN như là IsNumeric... gì đó thì bác tìm trong các đọan code mà mình POST lên, thế nào cũng có. Chẳng phải là làm khó các bác đâu vì đôi khi mình viết không phải trên CAD (viết trên máy công ty nên không có LISP)thì nhớ đâu viết đó, còn viết trên máy có CAD thì nó tự link các DEFUN đã có sẵn...

Bác dùng cái này, cũng tương tự nhưng có thêm phần cập nhật diện tích tự động...

 

http://www.cadviet.com/forum/index.php?showtopic=855

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
sao không chạy được Bác ơi !

Bác có thể hướng dẫn thêm được không.

Báo lỗi gì hả bạn?

Lisp trên chạy ổn mà!

 

Bạn cần làm theo các bước:

- Download file Dientich.zip rồi bung nén toàn bộ file vào thư mục support của AutoCAD (bạn cần phải làm điều này vì chương trình trên có sử dụng các file block dwg và file slide sld).

- Sau đó, load file dientich.vlx lên.

- Nếu 2 bước trên vẫn còn lỗi, bạn thử kiểm tra xem biến ATTREQ của AutoCAD có giá trị bao nhiêu? Mặc định là 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
hix, Bác cho em hỏi sao nó bắt nhập kí hiệu j thế? Em nhập chữ bất kì thì nó báo lỗi là sao?

Bạn chịu khó đọc hết hướng dẫn xem!

Tôi chạy thử, thấy bình thường mà.

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ới lệnh Area, chỉ có thể tính diện tích của một miền có dạng đa giác thôi. Hoặc như đoạn code trên đây thì nó chỉ tính được cho 1 đối tượng.

Để tính diện tích một miền kín, được tạo bởi nhiều đường, kể cả đường cong thì tui dùng lệnh BOUNDARY.

- Click chuột vào miền kín.

- Lấy diện tích của region tạo bởi BOUNDARY.

- Xoá region.

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

Chào bác Vndesperados. Em hiện đang cần 1 lips tính khối lượng san nền. Kiểu như cái Lips ghi diện tích này của bác. Nhưng em muốn cái dân số nó thay bằng khối lượng đào ( hoặc đắp ). Khi mình dùng nó hỏi ô đất cần tính ( bằng cách chỉ điểm như lệnh BO) sau đó sẽ hỏi chọn các H đắp để tính ra H đắp trung bình, rùi nhân với diện tích là ra khối lượng! Bác làm ơn cho em xin 1 cái lips như này được ko ạ! Em cám ơn bác nhiều nhiều!

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
Chương trình đưa lên đây mà không chạy được là bị bác NguyenHoanh chỉnh ngay nên chắc chắn là chạy được rồi.

Có thể bác không chạy được vì nó báo thiếu một vài cái DEFUN như là IsNumeric... gì đó thì bác tìm trong các đọan code mà mình POST lên, thế nào cũng có. Chẳng phải là làm khó các bác đâu vì đôi khi mình viết không phải trên CAD (viết trên máy công ty nên không có LISP)thì nhớ đâu viết đó, còn viết trên máy có CAD thì nó tự link các DEFUN đã có sẵn...

Bác dùng cái này, cũng tương tự nhưng có thêm phần cập nhật diện tích tự động...

 

http://www.cadviet.com/forum/index.php?showtopic=855

bác nào tốt bụng giúp emvới .Em cần tính diện tích của hình dười đây này http://www.cadviet.com/upfiles/2/nv_kenh_my_3.dwg

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

Mình vừa thử dùng lisp này của bạn nhưng đến phần nhập kí hiệu thì " bế tắc " , nếu không phiền chủ pick có thể giải thích 1 xíu được không , mình có đọc hướng dẫn nhưng não hơi phẳng nên chưa hiểu rõ lắm , thanks bạ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

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


×