Professional Documents
Culture Documents
(ENTMOD DS)
)
)
(SETQ DEM (+ DEM 1))
)
)
(COMMAND "UCS" "P")
(SETVAR "CMDECHO" CMD)
(SETVAR "OSMODE" OSM)
(setq *error* OLDERR)
; Restore old *error* handler
(PRINC)
)
;******************************************************************************
(DEFUN C:BD (/ CMD SS LTH DEM PT DS KDL N70 GOCX GOCY PT13 PT14 PTI
PT10 PT10I PT10N O10 N10 PT11 PT11N O11 N11 KC OSM OLDERR)
(SETQ CMD (GETVAR "CMDECHO"))
(SETQ OSM (GETVAR "OSMODE"))
(SETQ OLDERR *error*
*error* myerror)
(PRINC "Please select dimension object!")
(SETQ SS (SSGET))
(SETVAR "CMDECHO" 0)
(SETQ PT (GETPOINT "Point to trim or extend:"))
(SETQ PT (TRANS PT 1 0))
(COMMAND "UCS" "W")
(SETQ LTH (SSLENGTH SS))
(SETQ DEM 0)
(WHILE (< DEM LTH)
(PROGN
(SETQ DS (ENTGET (SSNAME SS DEM)))
(SETQ KDL (CDR (ASSOC 0 DS)))
(IF (= "DIMENSION" KDL)
(PROGN
(SETQ PT13 (CDR (ASSOC 13 DS)))
(SETQ PT14 (CDR (ASSOC 14 DS)))
(SETQ PT10 (CDR (ASSOC 10 DS)))
(SETQ PT11 (CDR (ASSOC 11 DS)))
(SETQ N70 (CDR (ASSOC 70 DS)))
(IF (OR (= N70 0) (= N70 32) (= N70 33) (= N70 160) (= N70 161))
(PROGN
(SETQ GOCY (ANGLE PT10 PT14))
(SETQ GOCX (+ GOCY (/ PI 2)))
)
)
(SETVAR "OSMODE" 0)
(SETQ PTI (POLAR PT GOCX 2))
(SETQ PT10I (POLAR PT10 GOCY 2))
(SETQ PT10N (INTERS PT PTI PT10 PT10I NIL))
(SETQ KC (DISTANCE PT10 PT10N))
(SETQ O10 (ASSOC 10 DS))
(SETQ N10 (CONS 10 PT10N))
(SETQ DS (SUBST N10 O10 DS))
(SETQ PT11N (POLAR PT11 (ANGLE PT10 PT10N) KC))
(SETQ O11 (ASSOC 11 DS))
(SETQ N11 (CONS 11 PT11N))
(SETQ DS (SUBST N11 O11 DS))
(ENTMOD DS)
)
)
"1") )
"2") )
(setq SS nil)
) (if (> CNT 0)
(princ (strcat "\n" (itoa CNT) " doi tuong tren layer LOCK.")) ) ) )
(if SS
(progn
(setq LAY (getvar "CLAYER")) (command "_.chprop" SS "" "_la" LAY "")
(if (= (sslength SS) 1)
(prompt (strcat "\n1 doi tuong da cap nhat vao layer : " LAY " (layer hi
en hanh)."))
(prompt (strcat "\n" (itoa (sslength SS)) " doi tuong da cap nhat vao la
yer : " LAY " (layer hien hanh).")) ) )) (princ) );end
(defun c:Lm () (laycur))
;;; =========================== Layer Iso ===================================
(Defun LAYISO (/ SS CNT LAY LAYLST VAL) (setvar "cmdecho" 0)
(if (not (setq SS (ssget "i")))
(progn
(prompt "\nChon doi tuong cho layer muon hien: ")
(setq SS (ssget))
) )
(if SS
(progn
(setq CNT 0)
(while (setq LAY (ssname SS CNT))
(setq LAY (cdr (assoc 8 (entget LAY))))
(if (not (member LAY LAYLST))
(setq LAYLST (cons LAY LAYLST))
)
(setq CNT (1+ CNT))
)
(if (member (getvar "CLAYER") LAYLST)
(setq LAY (getvar "CLAYER"))
(setvar "CLAYER" (setq LAY (last LAYLST)))
)
(command "_.LAYER" "_OFF" "*" "_Y")
(foreach VAL LAYLST (command "_ON" VAL))
(command "")
(if (= (length LAYLST) 1)
(prompt (strcat "\nLayer " (car LAYLST) " da tach ra."))
(prompt (strcat "\n" (itoa (length LAYLST)) " layers da tach ra. "
"Layer " LAY " la hien hanh." ) ) ) ) ) (princ) )
(defun c:LI () (layiso))
;;; ================================ Layer ON ==============================
(Defun C:LO () (setvar "cmdecho" 0) (Command "_.LAYER" "_ON" "*" "") (princ "\n
Da hien toan bo cac Layer !") (princ))
;;; ============================ Layer OFF =================================
(defun C:LOF ()
(layproc "off")
(princ)
)
;;; ============================== Layer Lock ==============================
(Defun LAYLCK (/ LAY)
(setvar "cmdecho" 0)
(setq LAY (entsel "\nChon doi tuong cho layer muon LOCK : "))
(if LAY
(progn
(setq LAY (cdr (assoc 8 (entget (car LAY)))))
(Command "_.LAYER" "_LOCK" LAY "")
(princ (strcat "\nLayer " LAY " da LOCK."))
) ) (princ)
)
(defun c:LL () (laylck))
;;; ============================== Layer UNLock ==============================
(Defun LAYULK (/ LAY)
(setvar "cmdecho" 0)
(setq LAY (entsel "\nChon doi tuong cho layer muon UNLOCK : "))
(if LAY
(progn
) ) (princ)
)
(defun c:LU () (layulk))
;;; ============================== Layer Freeze ===========================
(defun C:LF ()
(layproc "frz")
(princ)
)
;;; ============================== Layer Thaw ===============================
(Defun LAYTHW ()
(setvar "cmdecho" 0)
(setq Lay lff1) (setq Lff1 Lff2) (setq Lff2 Lff3) (setq Lff3 Lff4) (setq Lff4 L
ff5) (setq Lff5 Lff6) (setq Lff6 "0")
(Command "_.LAYER" "_THAW" LAY "")
(princ (strcat "\n
Layer : " LAY " da THAW."))
(princ) )
(defun c:LAYTHW () (laythw)) (defun c:LFF
() (laythw))
(Defun C:LTH () (setvar "cmdecho" 0) (Command "_.LAYER" "_THAW" "*" "") (princ
"\nDa THAW toan bo cac Layer !") (princ))
;;;===================== Delete all objects of Layer ========================
(defun DELAYER (/ ocmd L S)
(setq ocmd (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(setq L (strcase (getstring "\nLayer(s) to delete: ")))
(setq S (ssget "X" (list (cons 8 L))))
(if S
(command "ERASE" S "")
(princ "Layer empty or not a valid layer name.") )
(setq S nil)
(setvar "CMDECHO" ocmd)
(princ) )
(defun c:LD () (delayer))
;;============================= Change Color Layer ===========================
(DEFUN C:LCC (/ SSET SSL ENT COL LAY I MODE)
(SETQ SSET (SSGET))
(IF (/= NIL SSET)
(PROGN
(SETQ SSL (SSLENGTH SSET))
(SETQ LAY "")
(SETQ I 0)
(SETQ MODE 0)
(WHILE (< I SSL)
(SETQ ENT (ENTGET (SSNAME SSET I)))
(IF (= (CDR (ASSOC '8 ENT)) (GETVAR "CLAYER")) (SETQ MODE 1) )
(SETQ LAY (STRCAT LAY "," (CDR (ASSOC '8 ENT)) ))
(SETQ I (+ I 1))
)
(setq COL (getstring "\nNew color : "))
(COMMAND "LAYER" "C" COL LAY "")
(IF (= MODE 1) (COMMAND "") )
) )
(prompt (strcat "\nLayer has changed: " LAY))
(setvar "cmdecho" 1) (princ) )
;; ================ Change layer for DIM =============================
(DEFUN C:LCD (/ SSET SSL M LAY I)
(PRINC "\nSelect dimensions :")
(SETQ SSET (SSGET))
(IF (/= NIL SSET) (PROGN
(SETQ SSL (SSLENGTH SSET))
(SETQ LAY (GETSTRING "\nNew layer : "))
------------- LAYER PROCESSOR FOR LAYOFF & LAYFRZ -------------Main program body for LAYOFF and LAYFRZ. Provides user with
options for handling nested entities.
----------------------------------------------------------------
(defun LAYPROC ( TASK / NOEXIT OPT BLKLST CNT VPMODE EN PMT ANS LAY NEST BLKLST
VPSS)
; cycle counter
; if in a paper sp
; viewport
; set flag for fre
(setvar "errno" 7)
(while (= (getvar "errno") 7)
(setvar "errno" 0)
(initget "Options Undo _Options Undo")
(cond
((= TASK "off")
(setq EN (nentsel "\nChon doi tuong cho layer muon OFF or [Options/Und
o]: "))
)
((= TASK "frz")
(setq EN (nentsel "\nChon doi tuong cho layer muon frozen or [Options/
Undo]: "))
)
((= TASK "vpi")
(setq EN (nentsel "\nSelect an object on the layer to be Isolated in v
iewport or [Options/Undo]: "))
)
)
(if (= (getvar "errno") 7)
(prompt "\nNothing selected.")
)
)
; ---------------------- Options Selected ----------------------(cond
((= EN "Options")
(initget "No Block Entity
(cond
((= OPT 1)
(setq PMT "\nEnter an
ng/]<No nesting>: ")
)
((= OPT 2)
(setq PMT "\nEnter an
y level nesting>: ")
)
(T
(setq PMT "\nEnter an
k level nesting>: ")
)
)
(setq ANS (getkword PMT))
(cond
((null ANS)
(if (or (null OPT) (= OPT ""))
(progn
(setq OPT 3)
(setenv (strcat "ACET_Lay" TASK) "3")
)
)
)
((= ANS "No")
(setq OPT 1)
(setenv (strcat "ACET_Lay" TASK) "1")
)
((= ANS "Entity")
(setq OPT 2)
(setenv (strcat "ACET_Lay" TASK) "2")
)
(T
(setq OPT 3)
(setenv (strcat "ACET_Lay" TASK) "3")
)
)
)
; ---------------------- Undo selected --------------------------((= EN "Undo")
(if (> CNT 0)
(progn
(command "_.u")
(setq CNT (1- CNT))
)
(prompt "\nEverything has been undone.")
)
)
; ------------------------- Find Layer --------------------------(EN
(setq BLKLST (last EN))
(setq NEST (length BLKLST))
(cond
; If the entity is not nested or if the option for entity
; level nesting is selected.
((or (= OPT 2) (< (length EN) 3))
(setq LAY (entget (car EN)))
)
; If no nesting is desired
((= OPT 1)
(setq LAY (entget (car (reverse BLKLST))))
)
; All other cases (default)
(T
(setq BLKLST (reverse BLKLST))
(while (and
; strip out xrefs
( > (length BLKLST) 0)
(assoc 1 (tblsearch "BLOCK" (cdr (assoc 2 (entget (car BLKLST)))
)))
);and
(setq BLKLST (cdr BLKLST))
)
(if ( > (length BLKLST) 0)
; if there is a block present
(setq LAY (entget (car BLKLST))) ; use block layer
(setq LAY (entget (car EN)))
; else use layer of nensel
)
)
)
; ------------------------ Process Layer ------------------------(setq LAY (cdr (assoc 8 LAY)))
(if (= LAY (getvar "CLAYER"))
(cond
((= TASK "off")
(initget "Yes No _Yes No")
(setq ANS (getkword (acet-str-format "\nBan muon %1 (the CURRENT l
ayer) off? [Yes/No] <No>: " LAY)))
(setq ANS (if (null ANS) "No" ANS))
(if (= ANS "No")
(setq LAY nil)
)
)
((and (= TASK "frz") (not VPMODE))
(prompt (acet-str-format "\nKhong freeze layer %1 (the CURRENT lay
er)." LAY))
(setq LAY nil)
)
)
(setq ANS nil)
)
(if LAY
(cond
((= TASK "off")
(if ANS
(command "_.-LAYER" "_OFF" LAY "_Yes" "")
(command "_.-LAYER" "_OFF" LAY "")
)
(prompt (acet-str-format "\nLayer %1 da OFF." LAY))
(setq CNT (1+ CNT))
)
((and (= TASK "frz") VPMODE)
(command "_.VPLAYER" "_FREEZE" LAY "_current" "")
(prompt (acet-str-format "\nLayer %1 da frozen ." LAY))
(setq CNT (1+ CNT))
)
((= TASK "frz")
(command "_.-LAYER" "_FREEZE" LAY "")
(prompt (acet-str-format "\nLayer %1 da frozen." LAY ))
(setq CNT (1+ CNT))
)
((= TASK "vpi")
(setq VPSS (ssget "_x" (list '(-4 . "<AND")
'(0 . "VIEWPORT")
get all viewports
'(-4 . "<NOT")
(cons 69 (getvar "cvport"))
except the current
'(-4 . "NOT>")
'(-4 . "<NOT")
'(69 . 1)
and the paperspace viewport (1)
'(-4 . "NOT>")
'(-4 . "AND>")
)
;
;
)
)
(command "_.VPLAYER" "_FREEZE" LAY "_select" VPSS "" "")
(prompt (acet-str-format "\nLayer %1 da frozen in all viewports bu
t the current one." LAY ))
(setq CNT (1+ CNT))
)
)
)
)
; ---------------------- Nothing Selected ----------------------((not EN)
(setq NOEXIT nil)
)
)
)
)
)
;CAT DIM THEO PHUONG NGANG
(DEFUN C:XX()
(SETQ CMD (GETVAR "CMDECHO"))
(SETVAR "CMDECHO" 0)
(COMMAND "UCS" "W")
(SETVAR "CMDECHO" 1)
(PROMPT"\nChon cac duong dim phuong X de cat")
(SETQ SET (SSGET))
(PROMPT"\nChon vi tri cat")
(SETQ P1 (GETPOINT))
(SETQ Y3 (CADR P1))
(SETQ QUANT (SSLENGTH SET))
(SETQ INDEX 0)
(WHILE (< INDEX QUANT)
(IF (AND(= "DIMENSION" (CDR (ASSOC 0 (SETQ A (ENTGET (SSNAME SET INDEX))))))
)
(PROGN
(SETQ L13 (ASSOC 13 A))
(SETQ M13 (CDR L13))
(SETQ L14 (ASSOC 14 A))
(SETQ M14 (CDR L14))
(SETQ P13 (LIST 13 (CAR M13) Y3 (CADDR M13)))
(SETQ T13 (CDR P13))
(SETQ P14 (LIST 14 (CAR M14) Y3 (CADDR M14)))
(SETQ A (SUBST P13 L13 A))
(SETQ A (SUBST P14 L14 A))
(ENTMOD A)
)
)
(SETQ INDEX (+ INDEX 1))
)
(SETVAR "CMDECHO" 0)
(COMMAND "UCS" "P")
(SETVAR "CMDECHO" CMD)
)
;chuong trinh chen lai mot block
(defun c:ib()
(setq ent (entget (car (entsel "\nchon lai block de chen:"))))
(setq bname (cdr (assoc 2 ent)))
(command ".insert" bname PAUSE "1" "1" "0" "" )
(princ)
)
(princ)
)
;;;
(defun C:TRUC(/ app str t_r chon chon_k h_t)
(setvar "CMDECHO" 0)
(setq old_err *error*
*error* tdv_err)
(setq str "\nHetruc/<Tungtruc>:" t_r 1 chon 1 h_t NIL)
(progn
(initget "T H")
(setq chon_k(getkword str))
(cond
((= chon_k "T")
(progn
(setq str "\nHetruc/<Tungtruc>:" t_r 1 h_t NIL)
)
)
((= chon_k "H")
(progn
(setq str "\n<Hetruc>/Tungtruc:" h_t 1 t_r NIL)
)
)
((= chon_k NIL) (progn (setq t_r 1 h_t NIL) ))
)
)
;;;
;;; ----- Tung truc ----(defun t_truc(/ i sp i a giong chu tex rtr ap)
(setvar "CMDECHO" 0)
(setvar "BLIPMODE" 0)
(setq sp(getpoint "\nDiem giong:")
a 1
i a
ap 1 )
(if (= ap 1) (progn
(while i (progn
(if(null chu)(setq chu 300))
(if(null giong)(setq giong 300))
(if(null rtr)(setq rtr 300))
(initget "C D R")
(setq a(getpoint(strcat "\nR.truc<"(rtos rtr 2 3)">/Cao chu<"(rtos chu 2 3)">
/Dai giong<"(rtos giong 2 3)">/<huong giong>:")sp))
(cond
((= a "C")(setq chu(getreal "\nCao chu<300>:")) )
((= a "D" )(setq giong(getreal "\nDai dong<300>:")) )
((= a "R")(setq rtr(getreal "\nBan kinh truc<300>:")))
)
(if(> chu rtr)(alert "Chu qua lon, chon lai !!!"))
(if(and(and(/= a "C")(/= a "D")) (/= a "R")) (setq i NIL))
)
)
(command "_.LINE" sp (polar sp (angle sp a) (+ giong rtr)) "")
(command "_.CIRCLE" (setq pt(polar sp (angle sp a) (+ giong rtr))) rtr "")
(command "_.TRIM" "L" "" pt"")
(setvar "ANGDIR" 0)
(setq tex(strcase(getstring "\nTen truc: ")))
(command "_.TEXT" "J" "M" pt chu 0 tex "")
))
(princ)
);End funtion t_truc.
;;; ----- He truc ----(defun h_truc(/ i sp chu rtr giong a tex sp_h next sp1 kc)
(setq sp(getpoint "\nDiem dong truc thu nhat: ") i 1)
(while i (progn
(if(null chu)(setq chu 300))
(if(null giong)(setq giong 300))
(if(null rtr)(setq rtr 300))
(initget "C D R")
(setq a(getpoint(strcat "\nR.truc<"(rtos rtr 2 3)">/Cao chu<"(rtos chu 2 3)"
>/Dai giong<"(rtos giong 2 3)">/<huong giong>:")sp))
(cond
((= a "C")(setq chu(getreal "\nCao chu<300>:")) )
((= a "D" )(setq giong(getreal "\nDai dong<300>:")) )
((= a "R")(setq rtr(getreal "\nBan kinh truc<300>:")))
)
(if(> chu rtr)(alert "Chu qua lon, chon lai !!!"))
(if(and(and(/= a "C")(/= a "D")) (/= a "R")) (setq i NIL))
)
)
(command "_.LINE" sp (polar sp (angle sp a) (+ giong rtr)) ""
"_.CHPROP" "l" "" "la" "Dim" "")
(command "_.CIRCLE" (setq pt(polar sp (angle sp a) (+ giong rtr))) rtr
"_.CHPROP" "l" "" "la" "Dim" "")
(command "_.TRIM" "L" "" pt"")
(setvar "ANGDIR" 0)
(setq tex(strcase(getstring "\nTen truc: ")))
(command "_.TEXT" "J" "M" pt chu "0" tex
"_.CHPROP" "l" "" "la" "Dim" "")
; --- Truc tiep theo --(if(/= a NIL)
(progn
(setq kc 1 sp_h sp)
(while kc
(progn
(setq next(getdist "\nKhoang cach den truc tiep theo: "))
(if(= next NIL)(setq kc NIL)
(progn
(setq sp1(polar sp_h (+ (angle sp a) (dtr 90)) next))
(command "_.LINE" sp1 (polar sp1 (angle sp a) (+ giong rtr)) ""
"_.CHPROP" "l" "" "la" "Dim" "")
(command "_.CIRCLE" (setq pt(polar sp1 (angle sp a) (+ giong rtr))) rtr
"_.CHPROP" "l" "" "la" "Dim" "")
(command "_.TRIM" "L" "" pt"")
(setvar "ANGDIR" 0)
(setq tex(strcase(getstring "\nTen truc: ")))
(if (/= tex NIL)
(progn
(command "_.TEXT" "J" "M" pt chu "0" tex
"_.CHPROP" "l" "" "la" "Dim" "")
(setq tex NIL)
)
)
)
)
(setq sp_h sp1)
)
)
)
);End if.
);End funtion h_truc.
;;;
(if(= t_r 1)(t_truc))
(if(= h_t 1)(h_truc))
(setq *error* old_err)
;;;
(princ)
);End.
;;; The end of funtion.
(princ "DDTDV version 1.10 ...")
(princ " Loaded !")