Rated 5/5 based on 240179 internet user reviews

Jump to content


Change Photo
- - - - -

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


  • Please log in to reply
10 replies to this topic

#1 vndesperados

vndesperados

    biết lệnh xref

  • CVU Team
  • PipPipPipPipPipPipPip
  • 546 posts
Danh tiếng: 251 (khá)

Gửi vào 20 May 2007 - 10:39 PM

[url="http://www.cadviet.com/upfiles/Dientich.zip"]http://www.cadviet.c...es/Dientich.zip[/url]

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

"Ḿnh ơi, anh nhớ ḿ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=auto:0]//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;
}

  • 0

#2 tambat

tambat

    biết zoom

  • e-mail ảo
  • Pip
  • 17 posts
Danh tiếng: 7 (b́nh thường)

Gửi vào 26 June 2007 - 04:56 PM

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

"Ḿnh ơi, anh nhớ ḿ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=auto:0]//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.
  • 0

#3 vndesperados

vndesperados

    biết lệnh xref

  • CVU Team
  • PipPipPipPipPipPipPip
  • 546 posts
Danh tiếng: 251 (khá)

Gửi vào 02 July 2007 - 03:17 PM

sao không chạy được Bác ơi !
Bác có thể hướng dẫn thêm được không.



Chương tŕ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... ǵ đó th́ bác t́m trong các đọan code 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 ḿ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
  • 0

#4 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 3,685 posts
Danh tiếng: 4288 (đỉnh cao)

Gửi vào 02 July 2007 - 03:47 PM

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 ǵ 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 tŕ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.
  • 0

#5 dongphuong

dongphuong

    biết pan

  • Members
  • Pip
  • 8 posts
Danh tiếng: 4 (b́nh thường)

Gửi vào 19 November 2007 - 03:18 AM

hix, Bác cho em hỏi sao nó bắt nhập kí hiệu j thế? Em nhập chữ bất ḱ th́ nó báo lỗi là sao?
  • 0

#6 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 3,685 posts
Danh tiếng: 4288 (đỉnh cao)

Gửi vào 19 November 2007 - 09:26 AM

hix, Bác cho em hỏi sao nó bắt nhập kí hiệu j thế? Em nhập chữ bất ḱ 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à.
  • 0

#7 tqt37c2

tqt37c2

    Chưa sử dụng CAD

  • Members
  • Pip
  • 3 posts
Danh tiếng: 0 (b́nh thường)

Gửi vào 21 November 2007 - 09:25 PM

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

#8 dotranduy

dotranduy

    biết zoom

  • Members
  • Pip
  • 11 posts
Danh tiếng: 0 (b́nh thường)

Gửi vào 30 April 2008 - 11:44 AM

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 ḿ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!
  • 0

#9 phamkieuhung

phamkieuhung

    biết zoom

  • Members
  • Pip
  • 14 posts
Danh tiếng: 1 (b́nh thường)

Gửi vào 24 September 2009 - 10:33 PM

bác lười nó vừa vừa thôi lạm dụng lisp qua!
''dtm'' mặt cắt cần đào đắp rồi nhân với khoảng cách là xong thôi!
  • 0

#10 lamcoi16

lamcoi16

    Chưa sử dụng CAD

  • Members
  • Pip
  • 3 posts
Danh tiếng: 0 (b́nh thường)

Gửi vào 09 April 2010 - 02:46 PM

Chương tŕ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... ǵ đó th́ bác t́m trong các đọan code 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 ḿ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.c...v_kenh_my_3.dwg
  • 0

#11 chantoo

chantoo

    biết zoom

  • Members
  • Pip
  • 12 posts
Danh tiếng: -1 (b́nh thường)

Gửi vào 12 September 2011 - 11:08 AM

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 !
  • 0