Thứ Ba, 8 tháng 12, 2009

Tiện ích Xuất tọa độ.

Nếu bạn là dân quy hoạch thì không tránh khỏi việc ghi tọa độ các điểm trong bảng vẽ ở đây mình cung cấp 2 lisp trợ giúp việc này.
1-Tên lệnh: XTD
-Tác dụng:Liệt kê tọa độ x,y của điểm chọn bằng mủi tên chỉ trực tiếp vào điểm chọn.
-Thao tác:
+Nhập lệnh XDT.
Ban co muon chon diem toa do gia dinh khong: Co/Khong: Nếu dùng hệ tọa độ giả định thì gỏ c (nếu không thì gỏ k lúc này lisp sẽ lấy tọa độ 0,0 đúng tại gốc tọa độ)
Chon diem gia dinh: Chọn điểm cơ sở của bạn
Toa do X gia dinh : 100 nhập tạo độ x giả định của điểm vừa nhập
Toa do Y gia dinh : 100 nhập tạo độ y giả định của điểm vừa nhập
Ti le /: Nếu muốn thay đổi tỉ lệ (trường hợp bản vẽ của mình 1 mét không phải là 1 đơn vị) thì gỏ t và nhập giá trị 1 mét của mình vào. Nếu không thay đổi thì chọn điểm cần lấy tọa độ .
Chon diem viet ket qua:
Chon diem muon xem toa do :
Chon diem viet ket qua:
Kết quả viết ra là LEADER dùng dimstyle hiện hành.

2-Tên lệnh: LKD
-Tác dụng: Liệt kê tọa độ các điểm chọn thành bảng tại vị trí 0,0.
-Thao tác: giống lệnh XTD nhưng sau khi chọn điểm cần lấy tọa độ lisp sẽ hỏi số thứ tự của nút bạn nhập vào (các nút chọn không cần đúng thứ tự sau khi báo số thứ tự của nút thì lisp sẽ chèn block tên nhap vào vị trí này để bạn biết là đã chọn nút này rồi tránh trùng lắp). kết quả sẽ viết ra 1 bảng tạo vị trí tọa độ 0,0.

Bạn copy nội dung và tạo file lisp hay tải file về cũng được!

;Viet boi: KTS_DUY BINH SON - QUANG NGAI
;Dien dan: tailieukythuat.com
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(Defun c:xtd ( )
(setq lc (strcase (getstring "\nBan co muon chon diem toa do gia dinh khong: Co/Khong: ")))

(if (= lc "C")
(progn
(setq a (getpoint "\nChon diem gia dinh: "))
(setq ax (dnint "\nToa do X gia dinh "ax1))
(setq ax1 ax)
(setq ay (dnint "\nToa do Y gia dinh "ay1))
(setq ay1 ay)

(princ "\nPHAM QUOC DUY Binh Son - Quang ngai")
(command "-style" "thep" "VNI-HELVE" "0" "1" "0" "n" "n")
(if (null met)(setq met 1))
(Setq temp T)
(While temp
(setq b (strcat "\nTi le /: "))
(Initget "t T")
(setq str (getpoint b))
(Cond
((= str "t") (setq met (dnint "\nMot met ban ve la bao nhieu "momet)))
((= str "T") (setq met (dnint "\nMot met ban ve la bao nhieu "momet)))
(Progn
(Setq b str)
(setq momet met)
(setq temp nil)
)
)
)
(setq c (getpoint b"\nChon diem viet ket qua: "))
(setq luubatdiem (getvar "osmode")) (setq luulop (getvar "clayer"))
(setvar "osmode" 0)
(setq x (/ (car b) met))
(setq y (/ (cadr b) met))

(setq xg (/ (car a) met))
(setq yg (/ (cadr a) met))
(setq kx (- x xg))
(setq ky (- y yg))
(setq xm (+ kx ax))
(setq ym (+ ky ay))

(setq toadox (rtos xm 2 4))
(setq toadoy (rtos ym 2 4))
(setq noidungviet (strcat toadox "\\P" toadoy))
(command ".LEADER" b c "" noidungviet "")


(setvar "osmode" luubatdiem) (setvar "clayer" luulop)
(setvar "MODEMACRO" "**TAILIEUKYTHUAT.COM**")
(while
(setq b (getpoint "\nChon diem muon xem toa do : "))

(setq c (getpoint b"\nChon diem viet ket qua: "))
(setq luubatdiem (getvar "osmode")) (setq luulop (getvar "clayer"))
(setvar "osmode" 0)
(setq x (/ (car b) met))
(setq y (/ (cadr b) met))
(setq xg (/ (car a) met))
(setq yg (/ (cadr a) met))
(setq kx (- x xg))
(setq ky (- y yg))
(setq xm (+ kx ax))
(setq ym (+ ky ay))

(setq toadox (rtos xm 2 4))
(setq toadoy (rtos ym 2 4))
(setq noidungviet (strcat toadox "\\P" toadoy))
(command ".LEADER" b c "" noidungviet "")


(setvar "osmode" luubatdiem) (setvar "clayer" luulop)


)


)
)


(if (= lc "K")
(progn
(princ "\nPHAM QUOC DUY Binh Son - Quang ngai")
(command "-style" "thep" "VNI-HELVE" "0" "1" "0" "n" "n")
(if (null met)(setq met 1))
(Setq temp T)
(While temp
(setq b (strcat "\nTi le /: "))
(Initget "t T")
(setq str (getpoint b))
(Cond
((= str "t") (setq met (dnint "\nMot met ban ve la bao nhieu "momet)))
((= str "T") (setq met (dnint "\nMot met ban ve la bao nhieu "momet)))
(Progn
(Setq b str)
(setq momet met)
(setq temp nil)
)
)
)
(setq c (getpoint b"\nChon diem viet ket qua: "))
(setq luubatdiem (getvar "osmode")) (setq luulop (getvar "clayer"))
(setvar "osmode" 0)
(setq x (/ (car b) met))
(setq y (/ (cadr b) met))

(setq toadox (rtos x 2 4))
(setq toadoy (rtos y 2 4))
(setq noidungviet (strcat toadox "\\P" toadoy))
(command ".LEADER" b c "" noidungviet "")

(setvar "osmode" luubatdiem) (setvar "clayer" luulop)


(setvar "MODEMACRO" "**TAILIEUKYTHUAT.COM**")
(while
(setq b (getpoint "\nChon diem muon xem toa do : "))
(setq x (/ (car b) met))
(setq y (/ (cadr b) met))
(setq c (getpoint b"\nChon diem viet ket qua: "))
(setq luubatdiem (getvar "osmode")) (setq luulop (getvar "clayer"))
(setvar "osmode" 0)
(setq toadox (rtos x 2 4))
(setq toadoy (rtos y 2 4))
(setq noidungviet (strcat toadox "\\P" toadoy))
(command ".LEADER" b c "" noidungviet "")

(setvar "osmode" luubatdiem) (setvar "clayer" luulop)


)


)
)





(setvar "MODEMACRO" "**TAILIEUKYTHUAT.COM**")
(Princ)
)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(Defun c:lkd ( )
(setq lc (strcase (getstring "\nBan co muon chon diem toa do gia dinh khong: Co/Khong: ")))

(if (= lc "C")
(progn
(setq a (getpoint "\nChon diem gia dinh: "))
(setq ax (dnint "\nToa do X gia dinh "ax1))
(setq ax1 ax)
(setq ay (dnint "\nToa do Y gia dinh "ay1))
(setq ay1 ay)

(princ "\nPHAM QUOC DUY Binh Son - Quang ngai")
(command "-style" "thep" "VNI-HELVE" "0" "1" "0" "n" "n")
(if (null met)(setq met 1))
(Setq temp T)
(While temp
(setq b (strcat "\nTi le /: "))
(Initget "t T")
(setq str (getpoint b))
(Cond
((= str "t") (setq met (dnint "\nMot met ban ve la bao nhieu "momet)))
((= str "T") (setq met (dnint "\nMot met ban ve la bao nhieu "momet)))
(Progn
(Setq b str)
(setq momet met)
(setq temp nil)
)
)
)
(setq luubatdiem (getvar "osmode")) (setq luulop (getvar "clayer"))
(setvar "osmode" 0)
(setq x (/ (car b) met))
(setq y (/ (cadr b) met))

(setq xg (/ (car a) met))
(setq yg (/ (cadr a) met))
(setq kx (- x xg))
(setq ky (- y yg))
(setq xm (+ kx ax))
(setq ym (+ ky ay))


(command "INSERT" (strcat odiachay "\\tienich\\dwg\\nhap") (list (car b)(cadr b)) 1 1 0)
(setq xht (getreal "\nSo thu tu cua nut : "))
(setq xh (- xht 1))
(setq nx (* 8 xh))
(setq sb (/ xh 10))
(setq sbn (* 100 (fix sb)))
(setq snl (- xh (fix sb)))
(setq nl (- nx (* 80 (fix sb))))

(setq CHIAM (/ XHT 10))
(setq LAMCHAN (fix CHIAM))
(setq NHANM (* LAMCHAN 10))
(setq tenkc (- XHT NHANM))
(setq tenkcn (* TENKC 100))
(setq TENKCM (fix TENKCN))

(Cond
((= TENKCM 100) (command "INSERT" (strcat odiachay "\\tienich\\dwg\\tdbdiem") (list (- sbn 14) (- 6 nl)) 1 1 0)
)
((/= TENKCM 100)
)
)

(command "TEXT" (list (+ 0 sbn) (- 0 nl)) 4 0 (rtos xm 2 4))
(command "TEXT" (list (+ 42 sbn) (- 0 nl)) 4 0 (rtos ym 2 4))
(command "TEXT" (list (- sbn 10) (- 0 nl)) 4 0 (fix xht))
(command "LINE" (list (- sbn 14) (- (- 6 nl) 8))(list (+ sbn 80) (- (- 6 nl) 8)) "")
(command "LINE" (list (- sbn 14) (- 6 nl))(list (- sbn 14)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 12) (- 6 nl))(list (+ (- sbn 14) 12)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 53) (- 6 nl))(list (+ (- sbn 14) 53)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 94) (- 6 nl))(list (+ (- sbn 14) 94)(- (- 6 nl) 8)) "")
(setvar "osmode" luubatdiem) (setvar "clayer" luulop)


(setvar "MODEMACRO" "**TAILIEUKYTHUAT.COM**")
(while
(setq b (getpoint "\nChon diem muon xem toa do : "))

(setq x (/ (car b) met))
(setq y (/ (cadr b) met))
(setq xg (/ (car a) met))
(setq yg (/ (cadr a) met))
(setq kx (- x xg))
(setq ky (- y yg))
(setq xm (+ kx ax))
(setq ym (+ ky ay))

(setq luubatdiem (getvar "osmode")) (setq luulop (getvar "clayer"))
(setvar "MODEMACRO" "LIET KE TOA DO TAI DIEM 0-0")
(setvar "osmode" 0)
(command "INSERT" (strcat odiachay "\\tienich\\dwg\\nhap") (list (car b)(cadr b)) 1 1 0)
(setq xht (getreal "\nSo thu tu cua nut : "))
(setq xh (- xht 1))
(setq nx (* 8 xh))
(setq sb (/ xh 10))
(setq sbn (* 100 (fix sb)))
(setq snl (- xh (fix sb)))
(setq nl (- nx (* 80 (fix sb))))

(setq CHIAM (/ XHT 10))
(setq LAMCHAN (fix CHIAM))
(setq NHANM (* LAMCHAN 10))
(setq tenkc (- XHT NHANM))
(setq tenkcn (* TENKC 100))
(setq TENKCM (fix TENKCN))

(Cond
((= TENKCM 100) (command "INSERT" (strcat odiachay "\\tienich\\dwg\\tdbdiem") (list (- sbn 14) (- 6 nl)) 1 1 0)
)
((/= TENKCM 100)
)
)

(command "TEXT" (list (+ 0 sbn) (- 0 nl)) 4 0 (rtos xm 2 4))
(command "TEXT" (list (+ 42 sbn) (- 0 nl)) 4 0 (rtos ym 2 4))
(command "TEXT" (list (- sbn 10) (- 0 nl)) 4 0 (fix xht))
(command "LINE" (list (- sbn 14) (- (- 6 nl) 8))(list (+ sbn 80) (- (- 6 nl) 8)) "")
(command "LINE" (list (- sbn 14) (- 6 nl))(list (- sbn 14)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 12) (- 6 nl))(list (+ (- sbn 14) 12)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 53) (- 6 nl))(list (+ (- sbn 14) 53)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 94) (- 6 nl))(list (+ (- sbn 14) 94)(- (- 6 nl) 8)) "")
(setvar "osmode" luubatdiem) (setvar "clayer" luulop)


)


)
)


(if (= lc "K")
(progn
(princ "\nPHAM QUOC DUY Binh Son - Quang ngai")
(command "-style" "thep" "VNI-HELVE" "0" "1" "0" "n" "n")
(if (null met)(setq met 1))
(Setq temp T)
(While temp
(setq b (strcat "\nTi le /: "))
(Initget "t T")
(setq str (getpoint b))
(Cond
((= str "t") (setq met (dnint "\nMot met ban ve la bao nhieu "momet)))
((= str "T") (setq met (dnint "\nMot met ban ve la bao nhieu "momet)))
(Progn
(Setq b str)
(setq momet met)
(setq temp nil)
)
)
)
(setq luubatdiem (getvar "osmode")) (setq luulop (getvar "clayer"))
(setvar "osmode" 0)
(setq x (/ (car b) met))
(setq y (/ (cadr b) met))
(command "INSERT" "C:\\tailieukythuat\\dwg\\nhap" (list (car b)(cadr b)) 1 1 0)
(setq xht (getreal "\nSo thu tu cua nut : "))
(setq xh (- xht 1))
(setq nx (* 8 xh))
(setq sb (/ xh 10))
(setq sbn (* 100 (fix sb)))
(setq snl (- xh (fix sb)))
(setq nl (- nx (* 80 (fix sb))))

(setq CHIAM (/ XHT 10))
(setq LAMCHAN (fix CHIAM))
(setq NHANM (* LAMCHAN 10))
(setq tenkc (- XHT NHANM))
(setq tenkcn (* TENKC 100))
(setq TENKCM (fix TENKCN))

(Cond
((= TENKCM 100) (command "INSERT" "C:\\tailieukythuat\\dwg\\tdbdiem" (list (- sbn 14) (- 6 nl)) 1 1 0)
)
((/= TENKCM 100)
)
)

(command "TEXT" (list (+ 0 sbn) (- 0 nl)) 4 0 (rtos x 2 4))
(command "TEXT" (list (+ 42 sbn) (- 0 nl)) 4 0 (rtos y 2 4))
(command "TEXT" (list (- sbn 10) (- 0 nl)) 4 0 (fix xht))
(command "LINE" (list (- sbn 14) (- (- 6 nl) 8))(list (+ sbn 80) (- (- 6 nl) 8)) "")
(command "LINE" (list (- sbn 14) (- 6 nl))(list (- sbn 14)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 12) (- 6 nl))(list (+ (- sbn 14) 12)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 53) (- 6 nl))(list (+ (- sbn 14) 53)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 94) (- 6 nl))(list (+ (- sbn 14) 94)(- (- 6 nl) 8)) "")
(setvar "osmode" luubatdiem) (setvar "clayer" luulop)


(setvar "MODEMACRO" "**TAILIEUKYTHUAT.COM**")
(while
(setq b (getpoint "\nChon diem muon xem toa do : "))
(setq x (/ (car b) met))
(setq y (/ (cadr b) met))
(setq luubatdiem (getvar "osmode")) (setq luulop (getvar "clayer"))
(setvar "MODEMACRO" "LIET KE TOA DO TAI DIEM 0-0")
(setvar "osmode" 0)
(command "INSERT" "C:\\tailieukythuat\\dwg\\nhap" (list (car b)(cadr b)) 1 1 0)
(setq xht (getreal "\nSo thu tu cua nut : "))
(setq xh (- xht 1))
(setq nx (* 8 xh))
(setq sb (/ xh 10))
(setq sbn (* 100 (fix sb)))
(setq snl (- xh (fix sb)))
(setq nl (- nx (* 80 (fix sb))))

(setq CHIAM (/ XHT 10))
(setq LAMCHAN (fix CHIAM))
(setq NHANM (* LAMCHAN 10))
(setq tenkc (- XHT NHANM))
(setq tenkcn (* TENKC 100))
(setq TENKCM (fix TENKCN))

(Cond
((= TENKCM 100) (command "INSERT" "C:\\tailieukythuat\\dwg\\tdbdiem" (list (- sbn 14) (- 6 nl)) 1 1 0)
)
((/= TENKCM 100)
)
)

(command "TEXT" (list (+ 0 sbn) (- 0 nl)) 4 0 (rtos x 2 4))
(command "TEXT" (list (+ 42 sbn) (- 0 nl)) 4 0 (rtos y 2 4))
(command "TEXT" (list (- sbn 10) (- 0 nl)) 4 0 (fix xht))
(command "LINE" (list (- sbn 14) (- (- 6 nl) 8))(list (+ sbn 80) (- (- 6 nl) 8)) "")
(command "LINE" (list (- sbn 14) (- 6 nl))(list (- sbn 14)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 12) (- 6 nl))(list (+ (- sbn 14) 12)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 53) (- 6 nl))(list (+ (- sbn 14) 53)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 94) (- 6 nl))(list (+ (- sbn 14) 94)(- (- 6 nl) 8)) "")
(setvar "osmode" luubatdiem) (setvar "clayer" luulop)


)


)
)





(setvar "MODEMACRO" "**TAILIEUKYTHUAT.COM**")
(Princ)
)

;---------------------------------------
(defun nstr (stri def)
(princ stri)
(princ "<")
(princ " ")
(princ def)
(princ ">")
(princ ":")
(princ " ")
);defun nstr
;--------------------
(defun nstr1 (stri)
(princ stri)
(princ "<")
(princ "Nhap vao")
(princ ">")
(princ ":")
(princ " ")
);defun nstr1
;---------------------
(defun nint (prompt def / temp)
(if def
(setq temp (getint (nstr prompt def)))
(setq def (getint (nstr1 prompt)))
);if def
(if temp
(setq def temp)
def
);if temp
);defun nint
;---------------------
(defun dnint (prompt def / temp)
(if def
(setq temp (getreal (nstr prompt def)))
(setq def (getreal (nstr1 prompt)))
);if def
(if temp
(setq def temp)
def
);if temp
);defun nint
;--------------------
(defun ndist (po prompt def / temp) ;nhan kh/cach va luu gia tri mac dinh
(if def
(setq temp (getdist po (nstr prompt def)))
(setq def (getdist po (nstr1 prompt)))
)if def
(if temp
(setq def temp)
def
);if temp
);defun ndist
;-----------------------------------






Cần làm theo Hướng Dẫn khi dùng lisp này!

9 nhận xét:

  1. ghé thăm blog bạn chúc 1 ngày vui vẽ nhá

    Trả lờiXóa
  2. Bạn tìm hai dòng
    (setq toadox (rtos x 2 4))
    (setq toadoy (rtos y 2 4))
    và sửa thành
    (setq toadox (rtos x 2 2))
    (setq toadoy (rtos y 2 2))
    là được.

    Trả lờiXóa
  3. A.Duy ơi: tai sao em dùng lkd lisp ko thực hiện được hả anh.em chep file tdbdiem.dwg vvao support nhưng ko có bước chọn điểm cần xuất tọa độ anh ah
    anh giúp em nhé.cám ơn anh

    Trả lờiXóa
  4. em dung lệnh LKD mà nó mắc lổi thế này
    anh giúp em với nhé.cám ơn anh
    http://share.megaplus.vn/dl.php/2496087

    Trả lờiXóa
  5. Phía cuối bài có dòng lưu ý là phải làm theo hướng dẩn đấy. Bạn chọn vào chử hướng dẩn màu xanh ấy sẽ đưa đến bài hướng dẩn bạn để file dwg vào đúng chổ theo hướng dẩn là được vì mình dùng đường dẩn cố định mà.

    Trả lờiXóa
  6. em đã đọc nhiều bài viết của anh bên cadviet nhưng vào block của anh mới thấy đúng cái mình cần
    sao em đả làm các bước tạo thu mục y như anh nói mà vẫn ko dùng được lênh LKD
    anh hướng dẫn chi tiết giúp em với. em đang rất cần lisp này

    Trả lờiXóa
  7. em tạo file giống y như anh nói mà cad báo là ko tìm thấy đường dẫn anh ah anh xem hình này nhé
    http://share.megaplus.vn/dl.php/2497820
    làm phiền anh quá.giúp em với nhé

    Trả lờiXóa
  8. Sorry bạn nhé do file lisp mình chưa sửa đường dẩn. Bạn load lại về đi mình cập nhật bên trên rồi đấy.

    Trả lờiXóa
  9. sao cái lệnh LKD dùng không được vậy anh, anh nói thêm về cách làm một chút được ko?

    Trả lờiXóa