Đến nội dung


Hình ảnh
- - - - -

Autolisp tự phun toạ độ các điểm chi tiết


  • Please log in to reply
7 replies to this topic

#1 quanghuy181

quanghuy181

    biết vẽ arc

  • Members
  • PipPip
  • 41 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 23 December 2008 - 10:51 PM

Mình có Autolisp tự phun toạ độ các điểm nhưng không hiểu sao nhiều khi load nó lên nó lại cứ báo lỗi nên không sử dụng được. Cái này mình lấy của kỹ sư Bùi Công Khanh. Có ai biết xin chỉ giáo giúp mình với

(defun c:vebddch (/ tylks tylos tylee tylke tyloe tfilesl
toadoxy bang nghieng khluu coluu filenev timfile
)

(defun thaydoi(sset fld nw / cht_oh temp)
(setq sslen (sslength sset))
(setq cht_oh (getvar "highlight"))
(setvar "highlight" 0)
(while (> sslen 0)
(setq temp (ssname sset (setq sslen (1- sslen))))
(entmod (subst (cons fld nw)
(assoc fld (setq ent (entget temp)))
ent
)
)

)
(setvar "highlight" cht_oh)
)

(defun chu_hoa()
(cond
((= vn "©") (setq vn "¢"))
((= vn "¨") (setq vn "¡"))
((= vn "«") (setq vn "¤"))
((= vn "¬") (setq vn "¥"))
((= vn "­") (setq vn "¦"))
((= vn "ª") (setq vn "£"))
((= vn "®") (setq vn "§"))
((= vn "a") (setq vn "A"))
((= vn "b") (setq vn "B"))
((= vn "c") (setq vn "C"))
((= vn "d") (setq vn "D"))
((= vn "e") (setq vn "E"))
((= vn "f") (setq vn "F"))
((= vn "g") (setq vn "G"))
((= vn "h") (setq vn "H"))
((= vn "i") (setq vn "I"))
((= vn "j") (setq vn "J"))
((= vn "k") (setq vn "K"))
((= vn "l") (setq vn "L"))
((= vn "m") (setq vn "M"))
((= vn "n") (setq vn "N"))
((= vn "o") (setq vn "O"))
((= vn "p") (setq vn "P"))
((= vn "q") (setq vn "Q"))
((= vn "r") (setq vn "R"))
((= vn "s") (setq vn "S"))
((= vn "t") (setq vn "T"))
((= vn "u") (setq vn "U"))
((= vn "v") (setq vn "V"))
((= vn "w") (setq vn "W"))
((= vn "x") (setq vn "X"))
((= vn "y") (setq vn "Y"))
((= vn "z") (setq vn "Z"))
)
)

;; --------- bat dau ve --------

(defun batdauve()

(setq rsfont 0 rcfont 0)
(setq laychu (tblnext "style" T))
(while (/= nil laychu)
(progn
(setq loaifont (strcase (cdr (assoc 2 laychu))))
(setq hichu (cdr (assoc 40 laychu)))
(if (and (= "VN1ROMAN" loaifont)(> hichu 0.05))(setq rsfont 1))
(setq laychu (tblnext "style" nil))
)
)

(setq dongsai nil maytreo nil tentreo nil xtreo nil ytreo nil goctreo nil)
(setq mayphong nil tenphong nil xphong nil yphong nil xongroi nil)
(setq mayghi (strcat tenfile ".may"))

(setq cofile (findfile diemtreo))
(if (/= nil cofile)
(progn
(setq filetreo (open diemtreo "r"))
(setq cotreo (read-line filetreo))
(while (/= nil cotreo)
(progn
(setq treoten (substr cotreo 1 10))
(setq ntreo 0 treo "")
(repeat 10
(setq ntreo (+ 1 ntreo))
(setq btreo (substr treoten ntreo 1))
(if (/= " " btreo)(setq treo (strcat treo btreo)))
)
(setq xtrx (substr cotreo 11 14))
(setq ytry (substr cotreo 25 14))
(setq mtra (substr cotreo 39 12))
(setq ntreo 0)
(setq mtrm (strcat treo " "))
(repeat 12
(setq ntreo (+ 1 ntreo))
(setq btreo (substr mtra ntreo 1))
(if (/= " " btreo)(setq mtrm (strcat mtrm btreo)))
)
(setq maytreo (append maytreo (list mtrm)))
(setq tentreo (append tentreo (list treo)))
(setq xtreo (append xtreo (list xtrx)))
(setq ytreo (append ytreo (list ytry)))
(setq goctreo (append goctreo (list cotreo)))
(setq cotreo (read-line filetreo))
)
)
(close filetreo)
)
)

(setq heso (/ ntle 1000.))
(setq bki (* 0.25 heso))
(setq caoldat (* 2.15 heso))
(setq caomoccs (* 2.4 heso))
(setq caomocdc (* 2.15 heso))
(setq caomockv (* 1.7 heso))
(setq caodmia (* 1.25 heso))
(setq gocngh (* pi (/ 1. 18.)))

(setq xmax -9999999999. ymax -9999999999.)
(setq xmin 9999999999. ymin 9999999999.)
(setq xydmia nil tongten nil knoi 0 doan 0 kthieu 0)
(setq xycs nil tencs nil mcs 0)
(setq xydc nil tendc nil mdc 0)
(setq xykv nil tenkv nil mkv 0)
(setq filenoi nil noilien nil klien 0 trungten 0)

(if (= 0 nvong)
(progn
(setq dausol nil duoifile nil nvong 1 kmot 0)
(setq slfile (strcat tenfile ".sl"))
(setq filesl (open slfile "r"))
(setq aa (read-line filesl))
(while (/= nil aa)
(progn
(setq naaa (strlen aa) maaa 0 kaaa 0)
(repeat naaa
(setq maaa (+ 1 maaa))
(setq baaa (substr aa maaa 1))
(if (= " " baaa)(setq kaaa (+ 1 kaaa)))
)
(if (and (/= naaa kaaa)(= 0 kmot))
(progn
(setq dausol (append dausol (list aa)))
(setq aa (read-line filesl))
)
(progn
(setq kmot 1)
(setq duoifile (append duoifile (list aa)))
(setq aa (read-line filesl))
)
)
)
)
(close filesl)
)
)

(if (/= nil dausol)
(progn
(setq aa (nth 0 dausol))
(setq dongchu aa)
(setq hetchua aa)
(setq nthsol 0)
(setq solnth (length dausol))
)
)

(setq cosai 0 como 0 dong 0)

(if (= 1 solieu)
(setq codau 3)
(setq codau 0)
)

(while (/= hetchua nil)
(progn
(setq filexoa nil)
(setq dong (+ 1 dong) coghi 0)
(setq trong " ")
(if (< dong 1000)(setq trong (strcat trong " ")))
(if (< dong 100)(setq trong (strcat trong " ")))
(if (< dong 10)(setq trong (strcat trong " ")))
(princ (strcat "\n KiÓm Tra File Sè LiÖu Dßng Thø" trong (itoa dong) "\n"))
(setq n (strlen aa))
(setq k 0 d 1)
(setq mkie n)
(setq b (substr aa 1 1))
(setq moroi 0)
(if (= "(" b)
(progn
(setq nkie 1 laidung 0 nphay 0 moroi 1)
(while (= 0 laidung)
(progn
(setq nkie (+ 1 nkie))
(setq b (substr aa nkie 1))
(if (= "," b)(setq nphay 1))
(if (or (= ")" b)(= nkie n))(setq laidung 1))
)
)
(if (= nkie n)(setq cosai 1))
(if (= nphay 0)(setq cosai 1))
(setq mkie (- n nkie))
(setq b (substr aa 1 nkie))
(setq sb b)
(setq nkie (+ 1 nkie))
(setq aa (substr aa nkie mkie))
(setq filexoa (append filexoa (list b)))
(setq coghi (+ 1 coghi))
)
)
(setq b "")
(repeat mkie
(setq k (+ 1 k))
(setq vn (substr aa k 1))
(if (and (= 0 moroi)(= ")" vn))(setq cosai 1))
(if (and (= 0 moroi)(= "," vn))(setq cosai 1))
(if (= vn " ")
(progn
(setq d 0)
(if (/= "" b)
(progn
(setq filexoa (append filexoa (list b)))
(setq coghi (+ 1 coghi))
(if (= 1 coghi)(setq sb b))
)
)
(setq b "")
)
)
(if (and (/= vn " ") (= 0 d)) (setq d 1))
(if (/= 0 d) (setq b (strcat b vn)))
)
(if (/= "" b)
(progn
(setq filexoa (append filexoa (list b)))
(setq coghi (+ 1 coghi))
)
)
(setq trong " ")
(setq filexoa (append filexoa (list trong)))

(setq xem1 (substr sb 1 4))
(setq xxxem (substr sb 1 1))
(if (= ";" xxxem)(setq cosai 10))
(setq coixem (strcase xem1))
(if (= "TRAM" coixem)(setq codau 0))
(if (/= 1 solieu)
(progn
(if (and (= 1 dong)(/= coixem "TRAM"))(setq cosai 7))
(if (= 0 codau)(setq jsbo 6))
(if (or (= 1 codau)(= 2 codau))(setq jsbo 2))
(if (and (= 3 codau)(= 2 solieu))(setq jsbo 5))
(if (and (= 3 codau)(= 3 solieu))(setq jsbo 8))
)
(setq jsbo 3)
)
(if (and (/= 7 cosai)(< coghi jsbo))(setq cosai 1))

(if (and (= 0 cosai)(/= 0 codau))
(progn
(setq nfxoa 0)
(if (= 1 solieu)
(progn
(setq sa (nth nfxoa filexoa))
(setq nfxoa (+ 1 nfxoa))
(setq sa (nth nfxoa filexoa))
(setq nfxoa (+ 1 nfxoa))
(if (= nil (distof sa))(setq cosai 1))
(setq sa (nth nfxoa filexoa))
(setq nfxoa (+ 1 nfxoa))
(if (= nil (distof sa))(setq cosai 1))
)
(progn
(setq ss (nth nfxoa filexoa))
(setq nfxoa (+ 1 nfxoa))
(setq sa (nth nfxoa filexoa))
(setq nfxoa (+ 1 nfxoa))
(if (and (/= "?" ss)(= nil (distof sa)))(setq cosai 1))
(if (/= 3 codau)
(if (and (/= "?" ss)(= nil (distof ss)))(setq cosai 1))
(progn
(setq sa (nth nfxoa filexoa))
(setq nfxoa (+ 1 nfxoa))
(if (= nil (distof sa))(setq cosai 1))
(if (= 3 solieu)
(progn
(setq sa (nth nfxoa filexoa))
(setq nfxoa (+ 1 nfxoa))
(if (= nil (distof sa))(setq cosai 1))
)
)
(setq sa (nth nfxoa filexoa))
(setq nfxoa (+ 1 nfxoa))
(if (= nil (distof sa))(setq cosai 1))
(setq sa (nth nfxoa filexoa))
(setq nfxoa (+ 1 nfxoa))
(if (= nil (distof sa))(setq cosai 1))
(if (and (= 3 solieu)(= 2 dvgoc))
(progn
(setq sa (nth nfxoa filexoa))
(setq nfxoa (+ 1 nfxoa))
(if (= nil (distof sa))(setq cosai 1))
(setq sa (nth nfxoa filexoa))
(setq nfxoa (+ 1 nfxoa))
(if (= nil (distof sa))(setq cosai 1))
)
)
)
)
)
)
(if (and (= 0 cosai)(> coghi jsbo))
(setq ntiep 1)
(setq ntiep 0)
)
(if (and (= 3 codau)(= 1 ntiep))
(progn
(setq jsbo (- coghi jsbo))
(setq moco 0 dongco 0 plusco 0 batdau 0 modong 0 colop 0)
(while (and (/= batdau jsbo)(= 0 cosai))
(setq batdau (+ 1 batdau))
(setq sa (nth nfxoa filexoa))
(setq nfxoa (+ 1 nfxoa))
(setq nsa (strlen sa))
(setq sb (substr sa 1 1))
(setq dungco 0)
(if (or (= "@" sb)(= ">" sb))
(if (= 1 nsa)
(setq cosai 1)
(progn
(setq dungco (+ 1 dungco))
(setq moco (+ 1 moco))
(setq modong (+ moco dongco))
(if (= 2 modong)(setq cosai 1))
(if (< 1 batdau)(setq cosai 1))
)
)
)
(if (or (= "#" sb)(= "<" sb))
(if (> nsa 1)
(setq cosai 1)
(progn
(setq dungco (+ 1 dungco))
(setq dongco (+ 1 dongco))
(setq modong (+ moco dongco))
(if (= 2 modong)(setq cosai 1))
(if (< 1 batdau)(setq cosai 1))
)
)
)
(if (= "+" sb)
(progn
(if (= nsa 1)(setq cosai 1)(setq dungco (+ 1 dungco)))
(if (and (/= 0 colop)(/= 0 plusco))(setq cosai 1))
(setq plusco (+ 1 plusco))
)
)
(if (and (= 1 batdau)(= 0 dungco))(setq cosai 1))
(if (= 0 plusco)
(if (= 0 dungco)(setq cosai 1))
(if (= 0 dungco)(setq colop (+ 1 colop)))
)
) ;;;; while
(setq colop (- jsbo modong))
(setq colop (- colop plusco))
(if (> colop plusco)(setq cosai 1))
(if (> plusco 2)(setq cosai 1))
(if (= 0 como)(setq codong 0))
(setq como (+ moco como))
(if (< 1 como)(setq cosai 2))
(setq codong (+ codong dongco))
(if (< 1 codong)(setq cosai 3))
(if (and (= 0 como)(/= 0 codong))(setq cosai 3))
(if (and (= 1 como)(= 1 codong))
(progn
(setq como 0)
(setq codong 0)
)
)
)
)
)
)

(if (= 0 cosai)
(progn
(setq nfxoa 0)
(setq xem1 (nth nfxoa filexoa))
(setq nfxoa (+ 1 nfxoa))
(setq xemm (strcase (substr xem1 1 4)))
(if (= xemm "TRAM") (setq codau 0))
(if (= 3 codau )
(progn
(setq kroi 0 proi1 nil proi2 nil)
(setq tenmia xem1)
(setq temia (substr tenmia 1 1))
(setq xemlg (strcase tenmia))
(setq lgxem 0)
(if (or (= xemlg "MLG")(= xemlg "GPMB"))
(progn
(setq pr1 (list xemlg))
(setq lgxem 1)
)
(setq pr1 (list tenmia))
)
(if (and (/= temia "(")(= lgxem 0))
(if (member tenmia tongten)
(progn
(setq cosai 4)
(setq trungten dong)
)
)
)
(if (= temia "*")
(progn
(setq npho (- (strlen xem1) 1))
(setq phongten (substr xem1 2 npho))
(if (and (/= nil tenphong)(member phongten tenphong))
(progn
(setq jtreo (length tenphong) ktreo 0)
(repeat jtreo
(setq tenkiem (nth ktreo tenphong))
(setq maykiem (nth ktreo mayphong))
(if (= phongten tenkiem)
(progn
(setq cosai 5)
(setq saitreo (strcat "§· Cã Tªn §iÓm Phãng " phongten))
(setq saitreo (strcat saitreo " Tõ §iÓm M¸y " maykiem))
(setq saitreo (strcat saitreo " Trong File Sè LiÖu Nµy"))
(setq nstreo (- 78 (strlen saitreo)))
(repeat nstreo
(setq saitreo (strcat " " saitreo))
)
(setq treosai (strcat "\n" saitreo " !\n"))
)
)
(setq ktreo (+ 1 ktreo))
)
)
)
(setq tenphong (append tenphong (list phongten)))
(setq mayphong (append mayphong (list tenmay)))
(if (and (= 0 cosai)(/= nil tentreo))
(progn
(setq treophong (strcat phongten " " tenmay))
(if (and (member phongten tentreo)(not (member treophong maytreo)))
(progn
(setq cosai 5)
(setq jtreo (length maytreo) ktreo 0)
(repeat jtreo
(setq trakiem (nth ktreo maytreo))
(setq npho (strlen trakiem) mpho 0)
(setq saitreo "§· Cã Tªn §iÓm Phãng ")
(repeat npho
(setq mpho (+ 1 mpho))
(setq bpho (substr trakiem mpho 1))
(if (= " " bpho)
(progn
(setq mv1 (- mpho 1))
(setq mv2 (+ mpho 1))
(setq mv3 (- npho mpho))
(setq sai1 (substr trakiem 1 mv1))
(setq sai2 (substr trakiem mv2 mv3))
(setq saitreo (strcat saitreo " Tõ §iÓm M¸y "))
)
(setq saitreo (strcat saitreo bpho))
)
)
(if (and (= phongten sai1)(/= tenmay sai2))
(progn
(setq nstreo (- 78 (strlen saitreo)))
(repeat nstreo
(setq saitreo (strcat " " saitreo))
)
(setq treosai (strcat "\n" saitreo " !\n"))
)
)
(setq ktreo (+ 1 ktreo))
)
)
)
)
)
)
(setq tongten (append tongten pr1))
)
(if (/= 1 solieu)
(progn
(setq canhb (atof (nth nfxoa filexoa)))
(setq nfxoa (+ 1 nfxoa))

(if (and (= 3 solieu)(= 2 dvgoc))
(progn
(setq ddo (atoi (nth nfxoa filexoa)))
(setq nfxoa (+ 1 nfxoa))
(setq dph (atoi (nth nfxoa filexoa)))
(setq nfxoa (+ 1 nfxoa))
(setq dph (/ dph 60.))
(setq dgi (atof (nth nfxoa filexoa)))
(setq nfxoa (+ 1 nfxoa))
(setq dgi (/ dgi 3600.))
(setq gocddo (+ ddo dph dgi))
(setq gocdung (* pi (/ gocddo 180.)))
(setq canhb (* canhb (sin gocdung)))
)
)

(setq bdo (atoi (nth nfxoa filexoa)))
(setq nfxoa (+ 1 nfxoa))
(setq bph (atoi (nth nfxoa filexoa)))
(setq nfxoa (+ 1 nfxoa))
(setq bph (/ bph 60.))
(setq bgi (atof (nth nfxoa filexoa)))
(setq nfxoa (+ 1 nfxoa))
(setq bgi (/ bgi 3600.))
(setq gocbdo (+ bdo bph bgi))
(setq gocbang (* pi (/ gocbdo 180.)))

(setq pvmia (- pvi gocbang))
(setq pmia (polar pmay pvmia canhb))
(setq xmia (car pmia) ymia (cadr pmia))
)
(progn
(setq ymia (atof (nth nfxoa filexoa)))
(setq nfxoa (+ 1 nfxoa))
(setq xmia (atof (nth nfxoa filexoa)))
(setq nfxoa (+ 1 nfxoa))
(setq pmia (list xmia ymia))
)
)
(setq xmax (max xmax xmia))
(setq ymax (max ymax ymia))
(setq xmin (min xmin xmia))
(setq ymin (min ymin ymia))
(setq p12 (list pmia))

(if (= "*" temia)
(progn
(setq dghixch (fix (+ xmia 0.0005)))
(setq dghixle (fix (+ 0.5 (* 1000. (- xmia dghixch)))))
(setq dghil (strcat "00" (itoa dghixle)))
(setq dghile (substr dghil (- (strlen dghil) 2) 3))
(setq dghix (strcat (itoa dghixch) "." dghile))
(setq ntem (- 14 (strlen dghix)))
(repeat ntem
(setq dghix (strcat " " dghix))
)
(setq dghiych (fix (+ ymia 0.0005)))
(setq dghiyle (fix (+ 0.5 (* 1000. (- ymia dghiych)))))
(setq dghil (strcat "00" (itoa dghiyle)))
(setq dghile (substr dghil (- (strlen dghil) 2) 3))
(setq dghiy (strcat (itoa dghiych) "." dghile))
(setq ntem (- 14 (strlen dghiy)))
(repeat ntem
(setq dghiy (strcat " " dghiy))
)
(setq xphong (append xphong (list dghiy)))
(setq yphong (append yphong (list dghix)))
)
(setq xydmia (append xydmia p12))
)

(setq noi1 " " noi2 " " noi3 " " noi4 " " noi5 " ")
(setq tenlroi1 nil tenlroi2 nil)
(setq noi1 (nth nfxoa filexoa))
(setq nfxoa (+ 1 nfxoa))

(if (/= " " noi1)
(progn
(setq noi2 (nth nfxoa filexoa))
(setq nfxoa (+ 1 nfxoa))
)
)
(if (/= " " noi2)
(progn
(setq noi3 (nth nfxoa filexoa))
(setq nfxoa (+ 1 nfxoa))
)
)
(if (/= " " noi3)
(progn
(setq noi4 (nth nfxoa filexoa))
(setq nfxoa (+ 1 nfxoa))
)
)
(if (/= " " noi4)
(progn
(setq noi5 (nth nfxoa filexoa))
(setq nfxoa (+ 1 nfxoa))
)
)

(if (/= " " noi1 )
(progn
(setq nnoi (strlen noi1))
(setq kyhieu (substr noi1 1 1))
(setq mnoi (- nnoi 1))
(if (/= 0 mnoi)(setq tennoi (substr noi1 2 mnoi)))
(if (or (= kyhieu "@")(= kyhieu ">"))
(progn
(setq pnoid pmia)
(setq lop (strcase tennoi))
(setq conoi 1)
)
)
(if (or (= kyhieu "#")(= kyhieu "<"))
(progn
(setq conoi 0 )
(setq klien (+ 1 klien))
(setq noilien (append noilien (list pnoid)))
(setq noilien (append noilien (list pmia)))
(setq noilien (append noilien (list lop)))
)
)
(if (= kyhieu "+")
(progn
(setq proi1 tennoi)
(setq kroi (+ 1 kroi))
)
)
(if (and (= 1 conoi)(/= kyhieu "@"))
(progn
(setq klien (+ 1 klien))
(setq noilien (append noilien (list pnoid)))
(setq noilien (append noilien (list pmia)))
(setq noilien (append noilien (list lop)))
(setq pnoid pmia)
)
)
)
(progn
(if (= 1 conoi)
(progn
(setq klien (+ 1 klien))
(setq noilien (append noilien (list pnoid)))
(setq noilien (append noilien (list pmia)))
(setq noilien (append noilien (list lop)))
(setq pnoid pmia)
)
)
)
)

(if (/= noi2 " " )
(progn
(setq nnoi (strlen noi2))
(setq kyhieu (substr noi2 1 1))
(setq mnoi (- nnoi 1))
(if (/= 0 mnoi)(setq tennoi (substr noi2 2 mnoi)))
(if (= kyhieu "+")
(progn
(if (= proi1 nil)
(setq proi1 tennoi)
(setq proi2 tennoi)
)
(setq kroi (+ 1 kroi))
)
)
(if (/= kyhieu "+") (setq tenlroi1 (strcase noi2)))
)
)

(if (/= noi3 " " )
(progn
(setq nnoi (strlen noi3))
(setq kyhieu (substr noi3 1 1))
(setq mnoi (- nnoi 1))
(if (/= 0 mnoi)(setq tennoi (substr noi3 2 mnoi)))
(if (= kyhieu "+")
(progn
(setq proi2 tennoi)
(setq kroi (+ 1 kroi))
)
)
(if (/= kyhieu "+") (setq tenlroi1 (strcase noi3)))
)
)

(if (/= noi4 " " )
(progn
(if (and (/= nil tenlroi1)(= nil tenlroi2))(setq tenlroi2 (strcase noi4)))
(if (and (= nil tenlroi1)(= nil tenlroi2))(setq tenlroi1 (strcase noi4)))
)
)

(if (/= noi5 " " )(setq tenlroi2 (strcase noi5)))
(if (= nil tenlroi2) (setq tenlroi2 lop))
(if (= nil tenlroi1) (setq tenlroi1 lop))

(if (/= proi1 nil)
(progn
(setq knoi (+ 1 knoi))
(setq l11 (list tenlroi1))
(setq l12 (list tenmia))
(setq l13 (list pmia))
(setq l14 (list proi1))
(setq filenoi (append filenoi l11))
(setq filenoi (append filenoi l12))
(setq filenoi (append filenoi l13))
(setq filenoi (append filenoi l14))
)
)

(if (/= nil proi2)
(progn
(setq knoi (+ 1 knoi))
(setq l11 (list tenlroi2))
(setq l12 (list tenmia))
(setq l13 (list pmia))
(setq l14 (list proi2))
(setq filenoi (append filenoi l11))
(setq filenoi (append filenoi l12))
(setq filenoi (append filenoi l13))
(setq filenoi (append filenoi l14))
)
)
)
)

(if (= 2 codau)
(progn
(setq codau 3)
(setq timten 0)
(setq tentim (nth nfxoa filexoa))
(setq nfxoa (+ 1 nfxoa))
(if (/= "?" xem1)
(progn
(setq xhuong (atof xem1))
(setq yhuong (atof tentim))
(setq timten 1)
)
(progn
(if (/= nil tenphong)
(progn
(setq nphng (length tenphong) mphng 0)
(repeat nphng
(setq tenco (nth mphng tenphong))
(if (= tenco tentim)
(progn
(setq xhuong (atof (nth mphng xphong)))
(setq yhuong (atof (nth mphng yphong)))
(setq timten 1)
)
)
(setq mphng (+ 1 mphng))
)
)
)
(if (and (= 0 timten)(/= nil tentreo))
(progn
(setq nphng (length tentreo) mphng 0)
(repeat nphng
(setq tenco (nth mphng tentreo))
(if (= tenco tentim)
(progn
(setq xhuong (atof (nth mphng xtreo)))
(setq yhuong (atof (nth mphng ytreo)))
(setq timten 1)
)
)
(setq mphng (+ 1 mphng))
)
)
)
)
)
(if (/= 0 timten)
(progn
(setq phuong (list yhuong xhuong 0.0))
(setq pvi (angle pmay phuong))
(setq pnoid nil)
(setq conoi 0)
)
(setq cosai 6)
)
)
)

(if (= 1 codau)
(progn
(setq codau 2)
(setq moc nil timten 0)
(setq tentim (nth nfxoa filexoa))
(setq nfxoa (+ 1 nfxoa))
(if (/= "?" xem1)
(progn
(setq xmay (atof xem1))
(setq ymay (atof tentim))
(setq timten 1)
)
(progn
(if (/= nil tenphong)
(progn
(setq nphng (length tenphong) mphng 0)
(repeat nphng
(setq tenco (nth mphng tenphong))
(if (= tenco tentim)
(progn
(setq xmay (atof (nth mphng xphong)))
(setq ymay (atof (nth mphng yphong)))
(setq timten 1)
)
)
(setq mphng (+ 1 mphng))
)
)
)
(if (and (= 0 timten)(/= nil tentreo))
(progn
(setq nphng (length tentreo) mphng 0)
(repeat nphng
(setq tenco (nth mphng tentreo))
(if (= tenco tentim)
(progn
(setq xmay (atof (nth mphng xtreo)))
(setq ymay (atof (nth mphng ytreo)))
(setq timten 1)
)
)
(setq mphng (+ 1 mphng))
)
)
)
)
)
(if (/= 0 timten)
(progn
(setq xmax (max xmax ymay) ymax (max ymax xmay))
(setq xmin (min xmin ymay) ymin (min ymin xmay))
(setq pmay (list ymay xmay 0.0))
)
(setq cosai 6)
)

(if (= 3 coghi)
(progn
(setq moc (strcase (nth nfxoa filexoa)))
(setq nfxoa (+ 1 nfxoa))
)
)
(if (= "CS" moc)
(progn
(setq mcs (+ 1 mcs))
(setq tencs (append tencs (list tenmay)))
(setq xycs (append xycs (list pmay)))
)
(if (= "DC" moc)
(progn
(setq mdc (+ 1 mdc))
(setq tendc (append tendc (list tenmay)))
(setq xydc (append xydc (list pmay)))
)
(progn
(setq mkv (+ 1 mkv))
(setq tenkv (append tenkv (list tenmay)))
(setq xykv (append xykv (list pmay)))
)
)
)
)
)

(if (= xemm "TRAM")
(progn
(setq codau 1)
(setq tenmay (nth nfxoa filexoa))
(setq nfxoa (+ 1 nfxoa))
(setq tenmay (nth nfxoa filexoa))
(setq nfxoa (+ 1 nfxoa))
)
)
)
)

(if (= 10 cosai)(setq cosai 0))
(if (= 0 cosai)
(progn
(setq nthsol (+ 1 nthsol))
(if (/= nthsol solnth)
(progn
(setq bb (nth nthsol dausol))
(setq dongchu bb)
(setq nbb (strlen bb) kbb 0 mbb 0)
(while (= 0 kbb)
(progn
(setq mbb (+ 1 mbb))
(setq mba (- mbb 1))
(setq xbb (substr bb mbb 1))
(if (/= " " xbb)(setq kbb 1))
)
)
(setq nbb (- nbb mba))
(if (/= 0 nbb)
(progn
(setq aa (substr bb mbb nbb))
(setq hetchua aa)
)
(setq hetchua nil)
)
)
(setq hetchua nil)
)
)
(setq hetchua nil)
)

)
) ; while ---> hetchua /= nil

;; ---------- ket thuc kiem tra file solieu ------------

(if (= 0 cosai)
(progn
(princ "\n Xin Vui Lßng §îi 1 Chót ! \n")
(setq ptrd (list (- xmin (* 15. heso)) (- ymin (* 15. heso))))
(setq ppht (list (+ xmax (* 15. heso)) (+ ymax (* 15. heso))))
(command "zoom" ptrd ppht)

(setq laylop (tblnext "layer" T))
(setq lopdat 0 lopchu 0 lopchoo 0)
(while (/= nil laylop)
(progn
(setq dlop (strcase (cdr (assoc 2 laylop))))
(if (= dlop "LOAIDAT")(setq lopdat 1))
(if (= dlop "CHU_HO")(setq lopchu 1))
(if (= dlop "DIA_CHI")(setq lopchoo 1))
(setq laylop (tblnext "layer" nil))
)
)

(setq laylop (tblnext "block" T))
(setq mocbld 0 mocblk 0 mocblm 0)
(while (/= nil laylop)
(progn
(setq dlop (strcase (cdr (assoc 2 laylop))))
(if (= dlop "MOCLG")(setq mocblm 1))
(if (= dlop "MOC-DC")(setq mocbld 1))
(if (= dlop "MOC-KV")(setq mocblk 1))
(setq laylop (tblnext "layer" nil))
)
)

(if (= 0 lopdat)(command "layer" "m" "loaidat" "c" 33 "" ""))
(if (= 0 lopchu)(command "layer" "m" "chu_ho" "c" 4 "" ""))
(if (= 0 lopchoo)(command "layer" "m" "dia_chi" "c" 4 "" ""))

(if (/= 0 knoi)
(progn
(setq diemthi nil)
(setq n1 (length xydmia) anoi 0)
(repeat knoi
(setq loproi (nth anoi filenoi))
(setq anoi (+ 1 anoi))
(setq droi1 (nth anoi filenoi))
(setq anoi (+ 1 anoi))
(setq pdroi (nth anoi filenoi))
(setq anoi (+ 1 anoi))
(setq droi2 (nth anoi filenoi))
(setq anoi (+ 1 anoi))
(setq proi2 nil)
(setq den 0 dathay 0)
(while (/= 1 dathay)
(progn
(setq tenmia (nth den tongten))
(setq pmia (nth den xydmia))
(if (= tenmia droi2)
(progn
(setq proi2 pmia)
(setq dathay (+ 1 dathay))
)
)
(setq den (+ den 1))
(if (= n1 den) (setq dathay 1))
)
)
(if (/= nil proi2)
(progn
(setq klien (+ 1 klien))
(setq noilien (append noilien (list pdroi)))
(setq noilien (append noilien (list proi2)))
(setq noilien (append noilien (list loproi)))
)
(progn
(setq kthieu (+ 1 kthieu))
(setq ab (strcat "\n Kh«ng T×m ThÊy §iÓm " droi2 " --> Nèi Víi §iÓm " droi1))
(setq diemthi (append diemthi (list ab)))
)
)
)
(setq filenoi nil)
)
)

(if (= rsfont 0)
(command "style" "vn1roman" "vn1roman" "1.0" "0.75" "0" "n" "n" "n")
(setvar "textstyle" "vn1roman")
)

(command "layer" "m" "diemmia" "c" 140 "" "")
(setq nmia (length xydmia) dem 0 med 0)
(repeat nmia
(setq temia (nth dem tongten))
(setq nndat (strlen temia) mmdat 0 ntdat 0 tenmia nil chuten "" datco "" diachi "")
(repeat nndat
(setq mmdat (+ 1 mmdat))
(setq qdat (substr temia mmdat 1))
(if (= qdat ",")(setq ntdat mmdat))
)
(if (/= 0 ntdat)
(progn
(setq mmdat 0 nphay 0)
(repeat nndat
(setq mmdat (+ 1 mmdat))
(setq b (substr temia mmdat 1))
(if (= "," b)(setq nphay (+ nphay 1)))
(if (and (= nphay 0)(/= "(" b))(setq chuten (strcat chuten b)))
(if (and (= nphay 1)(/= ")" b))
(if (/= "," b)(setq datco (strcat datco b)))
)
(if (and (= nphay 2)(/= ")" b))
(if (/= "," b)(setq diachi (strcat diachi b)))
)
)
)
(setq tenmia temia)
)
(setq pmia (nth dem xydmia))
(setq dem (+ 1 dem))
(setq xmia (/ (fix (+ (* (cadr pmia) 100.) 0.5)) 100.))
(setq ymia (/ (fix (+ (* (car pmia) 100.) 0.5)) 100.))
(setq pmia (list ymia xmia))

(if (/= "" chuten)
(progn
(setq nrom (- (strlen chuten) 1) mrom 1 tenchu "")
(setq vn (substr chuten 1 1))
(chu_hoa)
(setq tenchu (strcat tenchu vn))
(setq cu_tr vn)
(repeat nrom
(setq mrom (+ 1 mrom))
(setq vn (substr chuten mrom 1))
(if (and (= cu_tr " ")(/= vn " "))(chu_hoa))
(setq tenchu (strcat tenchu vn))
(setq cu_tr vn)
)
(command "text" "j" "bl" pmia "0" tenchu)
(setq sset (ssget "L"))
(thaydoi sset 7 "vn1roman")
(thaydoi sset 40 (* 0.8 caodmia))
(thaydoi sset 41 0.75)
(thaydoi sset 51 gocngh)
(thaydoi sset 8 "CHU_HO")
(setq sset nil)
)
)

(if (/= "" datco)
(progn
(command "text" "j" "r" pmia "0" datco)
(setq sset (ssget "L"))
(thaydoi sset 7 "vn1roman")
(thaydoi sset 41 0.75)
(thaydoi sset 51 gocngh)
(thaydoi sset 8 "LOAIDAT")
(thaydoi sset 40 caoldat)
(setq sset nil)
)
)

(if (/= "" diachi)
(progn
(command "text" "j" "tl" pmia "0" diachi)
(setq sset (ssget "L"))
(thaydoi sset 7 "vn1roman")
(thaydoi sset 41 0.75)
(thaydoi sset 51 gocngh)
(thaydoi sset 8 "DIA_CHI")
(thaydoi sset 40 (* 0.8 caodmia))
(setq sset nil)
)
)

(if (/= nil tenmia)
(progn
(command "layer" "m" "diemmia" "c" 140 "" "")
(setq trongm " ")
(setq ndem (- dem med))
(if (< ndem 1000)(setq trongm (strcat trongm " ")))
(if (< ndem 100)(setq trongm (strcat trongm " ")))
(if (< ndem 10)(setq trongm (strcat trongm " ")))
(setq dave (strcat "\n VÏ §iÓm Mia Thø" trongm (itoa ndem) "\n"))
(princ dave)
(if (= tenmia "MLG")(command "insert" "*c:\\program files\\autocad r14\\thu_vien\\moclg.dwg" pmia heso ""))
(if (= tenmia "GPMB")(command "insert" "*c:\\program files\\autocad r14\\thu_vien\\mocgpmb.dwg" pmia heso ""))
(if (and (/= tenmia "MLG")(/= tenmia "GPMB"))
(progn
(command "circle" pmia bki)
(command "text" pmia "0" tenmia)
(setq sset (ssget "L"))
(thaydoi sset 40 caodmia)
)
)
(setq sset nil)
)
)
)

(if (/= 0 klien)
(progn
(setq anoi 0)
(repeat klien
(setq pnoid (nth anoi noilien))
(setq anoi (+ 1 anoi))
(setq pnoic (nth anoi noilien))
(setq anoi (+ 1 anoi))
(setq lop (nth anoi noilien))
(setq anoi (+ 1 anoi))
(setq ilop 0)

(setq xmid (/ (fix (+ (* (cadr pnoid) 100.) 0.5)) 100.))
(setq ymid (/ (fix (+ (* (car pnoid) 100.) 0.5)) 100.))
(setq pnoid (list ymid xmid))
(setq xmic (/ (fix (+ (* (cadr pnoic) 100.) 0.5)) 100.))
(setq ymic (/ (fix (+ (* (car pnoic) 100.) 0.5)) 100.))
(setq pnoic (list ymic xmic))

(if (= lop "NHA")
(progn
(setq ilop (+ 1 ilop))
(command "layer" "m" "nha" "c" 6 "" "")
)
)
(if (= lop "RANH")
(progn
(setq ilop (+ 1 ilop))
(command "layer" "m" "ranh" "c" 3 "" "")
)
)
(if (= lop "DUONG")
(progn
(setq ilop (+ 1 ilop))
(command "layer" "m" "duong" "c" 40 "" "")
)
)
(if (= 0 ilop)
(progn
(setq lopmoi (strcase lop T))
(command "layer" "m" lopmoi "")
)
)
(command "line" pnoid pnoic "")
(setq doan (+ 1 doan))
(setq trong " ")
(if (< doan 1000) (setq trong (strcat trong " ")))
(if (< doan 100) (setq trong (strcat trong " ")))
(if (< doan 10) (setq trong (strcat trong " ")))
(setq danoi (strcat "\n Nèi §o¹n Th¼ng Thø" trong (itoa doan) "\n"))
(princ danoi)
)
(setq noilien nil)
)
)

(if (/= 0 mcs)
(progn
(setq n1 (length xycs) dem 0)
(repeat n1
(setq tenmay (nth dem tencs))
(setq pmay (nth dem xycs))
(setq dem (+ dem 1))
(setq tenmay (strcat " " tenmay))
(command "insert" "*c:\\program files\\autocad r14\\thu_vien\\moc-cs.dwg" pmay heso "")
(setq sset (ssget "L"))
(thaydoi sset 1 tenmay)
(setq sset nil)
)
)
)
(setq tencs nil xycs nil)

(if (/= 0 mdc)
(progn
(setq n1 (length xydc) dem 0)
(repeat n1
(setq tenmay (nth dem tendc))
(setq pmay (nth dem xydc))
(setq dem (+ dem 1))
(setq tenmay (strcat " " tenmay))
(command "insert" "*c:\\program files\\autocad r14\\thu_vien\\moc-dc.dwg" pmay heso "")
(setq sset (ssget "L"))
(thaydoi sset 1 tenmay)
(setq sset nil)
)
)
)
(setq tendc nil xydc nil)

(if (/= 0 mkv)
(progn
(setq n1 (length xykv) dem 0)
(repeat n1
(setq tenmay (nth dem tenkv))
(setq tenmay (strcat " " tenmay))
(setq pmay (nth dem xykv))
(setq dem (+ dem 1))
(command "insert" "*c:\\program files\\autocad r14\\thu_vien\\moc-kv.dwg" pmay heso "")
(setq sset (ssget "L"))
(thaydoi sset 1 tenmay)
(setq sset nil)
)
)
)
(setq tenkv nil xykv nil)
(setq tongten nil xydmia nil)

(if (/= nil tenphong)
(progn
(setq ghimay (open mayghi "w"))
(setq ghimay2 (open diemtreo "w"))
(if (/= nil tentreo)
(progn
(setq ntreo (length tentreo) mtreo 0)
(repeat ntreo
(setq ttreo (nth mtreo tentreo))
(setq aaa (nth mtreo goctreo))
(if (not (member ttreo tenphong))
(write-line aaa ghimay2)
)
(setq mtreo (+ 1 mtreo))
)
)
)
(setq nphong (length tenphong) mphong 0)
(repeat nphong
(setq tenmia (nth mphong tenphong))
(setq ntem (- 10 (strlen tenmia)))
(setq tenghim tenmia)
(repeat ntem
(setq tenghim (strcat tenghim " "))
)
(setq dghix (nth mphong xphong))
(setq dghiy (nth mphong yphong))
(setq phon (nth mphong mayphong))
(setq ntem (- 12 (strlen phon)))
(setq tenpho phon)
(repeat ntem
(setq tenpho (strcat " " tenpho))
)
(setq aaa (strcat tenghim dghix dghiy tenpho))
(write-line aaa ghimay)
(write-line aaa ghimay2)
(setq mphong (+ 1 mphong))
)
(close ghimay)
(close ghimay2)
)
)

(if (= 1 coluu)
(progn
(setq canghi 0)
(setq tendwg (getvar "dwgname"))
(setq n (strlen tendwg))
(setq duoidwg (substr tendwg (- n 2) 3))
(if (/= duoidwg "dwg")
(setq canghi 1)
(progn
(setq tendwg (strcat tendwg "00000000"))
(setq dwgten (strcat (substr tendwg 1 7) ".dwg"))
(if (= dwgten "Drawing.dwg")(setq canghi 1))
)
)
(if (= 1 canghi)
(progn
(setq tfile (getfiled " NhËp Tªn File vµ L­u B¶n VÏ" "d:/" "dwg" 1))
(if (/= nil tfile)
(progn
(if (/= nil (findfile tfile))
(command "saveas" "" tfile "y")
(command "saveas" "" tfile)
)
)
)
)
(command "save" "")
)
)
)

(setq thieu (itoa kthieu))
(setq mmay (+ mdc mkv))
(setq xongroi "§· VÏ ->")
(if (/= 0 mmay)(setq xongroi (strcat xongroi " " (itoa mmay) " §iÓm M¸y")))
(if (/= 0 ndem)(setq xongroi (strcat xongroi ", " (itoa ndem) " §iÓm Mia")))
(if (/= 0 doan)(setq xongroi (strcat xongroi ", " (itoa doan) " §o¹n Th¼ng")))

)
)

)

;;;;;; ---------- Da Ve Xong ------------


(defun dat_200()
(setq tylks 1)
(setq tylos 0)
(setq tylee 0)
(setq tylke 0)
(setq tyloe 0)
(dat_so)
)

(defun dat_500()
(setq tylos 1)
(setq tylks 0)
(setq tylee 0)
(setq tylke 0)
(setq tyloe 0)
(dat_so)
)

(defun dat_1000()
(setq tylee 1)
(setq tylks 0)
(setq tylos 0)
(setq tylke 0)
(setq tyloe 0)
(dat_so)
)

(defun dat_2000()
(setq tylke 1)
(setq tylks 0)
(setq tylos 0)
(setq tylee 0)
(setq tyloe 0)
(dat_so)
)

(defun dat_5000()
(setq tyloe 1)
(setq tylks 0)
(setq tylos 0)
(setq tylee 0)
(setq tylke 0)
(dat_so)
)

(defun solieu1()
(setq toadoxy 1)
(setq bang 0)
(setq nghieng 0)
(dat_so)
)

(defun solieu2()
(setq toadoxy 0)
(setq bang 1)
(setq nghieng 0)
(dat_so)
)

(defun solieu3()
(setq toadoxy 0)
(setq bang 0)
(setq nghieng 1)
(dat_so)
)

(defun xem_ghi1()
(setq coluu 0)
(setq khluu 1)
(dat_so)
)

(defun xem_ghi2()
(setq coluu 1)
(setq khluu 0)
(dat_so)
)

(defun dat_so()
(setq dvgoc 2)
(setq khoidong 1 solieu 0 tyle 0)
(if (= 1 toadoxy)(setq solieu 1))
(if (= 1 bang)(setq solieu 2))
(if (= 1 nghieng)(setq solieu 3))
(if (/= 0 (+ tylks tylos tylee tylke tyloe))(setq tyle 1))
(setq khoixong 1)
(if (= 0 solieu)(setq khoixong 0))
(if (= 0 tyle)(setq khoixong 0))
(if (and (= 0 khluu)(= 0 coluu))(setq khoixong 0))
(if (= 0 khoixong)
(progn
(mode_tile "accept" 1)
(mode_tile "cancel" 2)
)
)
(if (= nil tfilesl)(setq tfilesl ""))
(set_tile "filenev" tfilesl)
(set_tile "toadoxy" (itoa toadoxy))
(set_tile "bang" (itoa bang))
(set_tile "nghieng" (itoa nghieng))
(set_tile "khluu" (itoa khluu))
(set_tile "coluu" (itoa coluu))
(set_tile "tylks" (itoa tylks))
(set_tile "tylos" (itoa tylos))
(set_tile "tylee" (itoa tylee))
(set_tile "tylke" (itoa tylke))
(set_tile "tyloe" (itoa tyloe))

(if (= "" tfilesl)
(progn
(mode_tile "toadoxy" 1)
(mode_tile "bang" 1)
(mode_tile "nghieng" 1)
(mode_tile "khluu" 1)
(mode_tile "coluu" 1)
(mode_tile "tylks" 1)
(mode_tile "tylos" 1)
(mode_tile "tylee" 1)
(mode_tile "tylke" 1)
(mode_tile "tyloe" 1)
)
(progn
(mode_tile "toadoxy" 0)
(mode_tile "bang" 0)
(mode_tile "nghieng" 0)
(mode_tile "khluu" 0)
(mode_tile "coluu" 0)
(mode_tile "tylks" 0)
(mode_tile "tylos" 0)
(mode_tile "tylee" 0)
(mode_tile "tylke" 0)
(mode_tile "tyloe" 0)
)
)

(set_tile "error" "")
(if (= "" tfilesl)
(set_tile "error" "H·y BÊm §Ó Chän File Sè LiÖu §o !")
(progn
(if (/= 1 solieu)
(progn
(cond
((= 0 solieu)
(set_tile "error" "H·y Cho BiÕt D¹ng File Sè LiÖu §o !")
)
((= 0 tyle)
(set_tile "error" "H·y Chän Tû LÖ B¶n §å CÇn VÏ !")
)
((and (= 0 khluu)(= 0 coluu))
(set_tile "error" "H·y Cho BiÕt Cã L­u B¶n VÏ Kh«ng ?")
)
)
)
(progn
(cond
((= 0 tyle)
(set_tile "error" "H·y Chän Tû LÖ B¶n §å CÇn VÏ !")
)
((and (= 0 khluu)(= 0 coluu))
(set_tile "error" "H·y Cho BiÕt Cã L­u B¶n VÏ Kh«ng ?")
)
)
)
)
(if (= 1 khoixong)
(progn
(set_tile "error" "BÊm OK hoÆc ENTER §Ó B¾t §Çu VÏ !")
(mode_tile "accept" 0)
(mode_tile "accept" 2)
)
)
)
)
)

(defun dat_bang()
(if (< 1 wws)
(progn
(if (= 1 daluu)
(progn
(setq dong (+ 1 stt_tong))
(mode_tile "accept" 0)
(mode_tile "accept" 2)
)
(progn
(setq stt_tong (- dong 1))
(mode_tile "accept" 1)
(mode_tile "luu" 2)
)
)
(setq dongchu (nth stt_tong dausol))
(set_tile "error" (strcat " Trong Khung ChØnh Söa Lµ Dßng " (itoa dong) " Cña File Sè LiÖu !"))
(start_list "stt_tong")
(mapcar 'add_list dausol)
(end_list)
(if (= 1 daluu)(setq dongsai dongchu))
(set_tile "dongchu" dongchu)
(set_tile "stt_tong" (itoa stt_tong))
(set_tile "tfilesl" tfilesl)
(if (and (= 0 dasua)(= 0 daluu))(princ saico))
(if (and (= 1 dasua)(= 0 daluu))(princ (strcat "\n Dßng " (itoa dong) " §· Thay §æi, H·y BÊm \"Save\" §Ó L­u File Sè LiÖu !\n")))
(if (and (= 1 dasua)(= 1 daluu))(princ "\n §· L­u Xong, NÕu Kh«ng Söa TiÕp H·y BÊm \"OK\" §Ó VÏ L¹i !\n"))
)
)
)

(defun hay_sua()
(if (/= dongsai dongold)
(progn
(setq dasua 1)
(setq daluu 0)
(setq dongsai dongold)
(setq dausol (subst dongsai (nth stt_tong dausol) dausol))
)
)
(dat_bang)
)

(defun hay_luu()
(if (and (= 1 dasua)(= 0 daluu))
(progn
(setq filexoa (open tfilesl "w"))
(setq n (length dausol) m 0)
(repeat n
(setq aa (nth m dausol))
(write-line aa filexoa)
(setq m (+ 1 m))
)
(if (/= nil duoifile)
(progn
(setq n (length duoifile) m 0)
(repeat n
(setq aa (nth m duoifile))
(write-line aa filexoa)
(setq m (+ 1 m))
)
)
)
(close filexoa)
(setq daluu 1)
)
)
(dat_bang)
)

(command "cmdecho" 0)
(setq kieusnap (getvar "osmode"))
(setq kieulop (getvar "clayer"))
(command "blipmode" "off")
(command "osnap" "non")

(setq tfilesl "" xongroi nil kthieu 0)
(setq khoidong 0 nvong 0)
(setq cosai 0 trungten 0)
(setq toadoxy 0 bang 0 nghieng 0)
(setq khluu 0 coluu 0)
(setq tylks 0 tylos 0 tylee 0 tylke 0 tyloe 0 tyle 0)

;;; Bat Dau Dialog Chinh

(setq www 5 wws 5)
(while (< 1 www)
(if (/= "" tfilesl)
(progn
(setq dcl_id (load_dialog "vebddch.dcl"))
(if (not (new_dialog "vebddch" dcl_id)) (exit))
)
(progn
(setq dcl_id (load_dialog "vebddch0.dcl"))
(if (not (new_dialog "vebddch0" dcl_id)) (exit))
)
)
(if (or (= 0 khoidong)(= 2 www))(dat_so))
(action_tile "filenev" "(setq tfilesl (get_tile $key))")
(action_tile "timfile" "(done_dialog 2)")
(action_tile "toadoxy" "(solieu1)")
(action_tile "bang" "(solieu2)")
(action_tile "nghieng" "(solieu3)")
(action_tile "tylks" "(dat_200)")
(action_tile "tylos" "(dat_500)")
(action_tile "tylee" "(dat_1000)")
(action_tile "tylke" "(dat_2000)")
(action_tile "tyloe" "(dat_5000)")
(action_tile "khluu" "(xem_ghi1)")
(action_tile "coluu" "(xem_ghi2)")
(action_tile "accept" "(done_dialog 1)")
(action_tile "cancel" "(done_dialog 0)")
(setq www (start_dialog))
(princ)

(if (= 2 www)
(progn
(setq toadoxy 0 bang 0 nghieng 0)
(setq khluu 0 coluu 0)
(setq tylks 0 tylos 0 tylee 0 tylke 0 tyloe 0 tyle 0)
(setq thumuc (getvar "dwgprefix"))
(setq tendwg (getvar "dwgname"))
(setq adwg (substr tendwg 1 7))
(if (= adwg "Drawing")(setq tendwg "Drawing.dwg"))
(if (= tendwg "Drawing.dwg")(setq thumuc "D:/"))
(setq tfilesl (getfiled " Chän File Sè LiÖu VÏ B¶n §å §Þa ChÝnh" thumuc "sl" 4))
(if (= nil tfilesl)(setq tfilesl ""))
)
)

(if (= 1 www)
(progn
(command "zoom" "0.999999x")
(princ)
(setq ve_duoc 0)
(if (and (/= nil tfilesl)(/= "" tfilesl))
(if (= nil (findfile tfilesl))(setq ve_duoc (+ 1 ve_duoc)))
(setq ve_duoc (+ 1 ve_duoc))
)
(if (= 0 ve_duoc)
(progn
(setq ntfi (strlen tfilesl) m 0 mtfi 0)
(repeat ntfi
(setq m (+ 1 m))
(setq chutf (substr tfilesl m 1))
(if (= "\\" chutf)
(progn
(setq ktfi m)
(setq mtfi (+ 1 mtfi))
(if (= 2 mtfi)(setq kmfi m))
)
)
)
(setq jtfi (- ntfi ktfi))
(setq m (+ 1 ktfi))
(setq tpafl (substr tfilesl 1 ktfi))
(setq fileu (substr tfilesl m jtfi))
(setq tfilesl (strcat tpafl (strcase fileu T)))
(setq diemtreo (strcat (substr tfilesl 1 kmfi) "TT_KHUDO\\diemtreo.xy"))
(setq ntenf (- (strlen tfilesl) 3))
(setq tenfile (substr tfilesl 1 ntenf))
(cond
((= tylks 1) (setq ntle 200))
((= tylos 1) (setq ntle 500))
((= tylee 1) (setq ntle 1000))
((= tylke 1) (setq ntle 2000))
((= tyloe 1) (setq ntle 5000))
)

(batdauve)

(setq filesai nil)
(if (> cosai 5)
(progn
(if (= 6 cosai)(setq filesai (strcat "\n Kh«ng ThÊy Täa §é §iÓm " tentim " T¹i Dßng " (itoa dong) " !\n")))
(if (= 7 cosai)(setq filesai "\n Dßng §Çu Tiªn Ph¶i Khai B¸o Tr¹m M¸y, §iÓm H­íng !\n"))
(setq cosai 0)
)
)
(while (/= 0 cosai)
(progn
(if (= 1 cosai)
(setq saico "\n H·y Söa Dßng Sè LiÖu Sai Trong Khung ChØnh Söa !\n")
)
(if (= 2 cosai)
(setq saico (strcat "\n Tíi §iÓm Mia " tenmia " T¹i Dßng " (itoa dong) " Ch­a Ng¾t Nèi, Nh­ng §· Më !\n "))
)
(if (= 3 cosai)
(setq saico (strcat "\n Tíi §iÓm Mia " tenmia " T¹i Dßng " (itoa dong) " Ch­a Më Nèi, Nh­ng §· Ng¾t !\n "))
)
(if (= 4 cosai)
(setq saico (strcat "\n H·y Söa §iÓm Mia Trïng Tªn <" tenmia "> T¹i Dßng " (itoa trungten) " !\n "))
)
(if (= 5 cosai)
(setq saico treosai)
)

(setq wws 5 dasua 0 daluu 0)
(setq dongsai (nth (- dong 1) dausol))
(while (< 1 wws)
(setq dcl_id (load_dialog "vebderr1.dcl"))
(if (not (new_dialog "vebderr1" dcl_id)) (exit))
(if (= 0 dasua)(dat_bang))
(action_tile "tfilesl" "(setq tfilenew (get_tile $key))")
(action_tile "stt_tong" "(setq stt_tong (atoi $value))(dat_bang)")
(action_tile "dongchu" "(setq dongold (get_tile $key))(hay_sua)")
(action_tile "luu" "(hay_luu)")
(action_tile "accept" "(done_dialog 1)")
(action_tile "cancel" "(done_dialog 0)")
(setq wws (start_dialog))
(if (and (= 1 wws)(= 0 daluu))(setq wws 5))
(if (= 0 wws)(setq cosai 0))
(if (= 1 wws)
(progn
(setq cosai 0)
(batdauve)
)
)
)
)
)
)
(progn
(setq www 5)
(setq khoidong 0)
(setq toadoxy 0 bang 0 nghieng 0)
(setq khluu 0 coluu 0)
(setq tylks 0 tylos 0 tylee 0 tylke 0 tyloe 0 tyle 0)
(setq tfilesl "")
)
)
)
) ;;; dong if www=1
) ;;; dong while 1 < www
(princ)

(setq tfilesl nil tenfile nil tongten nil xydmia nil)
(setq xydc nil tendc nil xykv nil tenkv nil filenoi nil noilien nil)
(setq filexoa nil dausol nil duoifile nil diemtreo nil )
(setq tentreo nil xtreo nil ytreo nil goctreo nil maytreo nil)
(setq tenphong nil xphong nil yphong nil mayphong nil)
(setvar "osmode" kieusnap)
(setvar "clayer" kieulop)
(command "cmdecho" 1)

(if (and (/= 0 wws)(/= 0 www))
(progn
(if (/= 0 kthieu)
(progn
(setq xongroi (strcat xongroi ", Sai Nèi Rêi " thieu " §iÓm"))
(setq kk 0)
(repeat kthieu
(setq aa (nth kk diemthi))
(princ aa)
(setq kk (+ 1 kk))
)
)
)
(if (/= nil xongroi)
(progn
(setq nxong (- 79 (strlen xongroi)))
(repeat nxong
(setq xongroi (strcat " " xongroi))
)
(princ (strcat "\n " xongroi))
(princ)
)
)
)
)
(if (/= nil filesai)(princ filesai))
(princ)
) ;;; Program End

;;;------------------------------------------------------------------------

(princ " _VEBDDCH loaded.")
(princ)




Còn đây là File.DCL của nó

vebddch : dialog {
label = " Ch­¬ng Tr×nh VÏ B¶n §å §Þa ChÝnh";
: text {
label = "< T¸c gi¶ : KS. Bïi C«ng Khanh Tel : 091.8456422 >";
alignment = right;
}
: boxed_column {
: row {
: column {
: boxed_column {
label = "Tªn File Sè LiÖu §o";
: row {
: edit_box {
key = "filenev";
edit_width = 53;
}
: button {
label = "";
key = "timfile";
}
}
}
: boxed_column {
label = "D¹ng File Sè LiÖu §o";
: radio_button {
key = "toadoxy";
label = "1. Täa §é < X, Y >";
}
: radio_button {
key = "bang";
label = "2. C¹nh B»ng, Gãc B»ng";
}
: radio_button {
key = "nghieng";
label = "3. C¹nh Nghiªng, Gãc §øng, Gãc B»ng";
}
: text {
label = " Chó ý : §¬n vÞ ®o gãc cña c¸c d¹ng 2. vµ 3. ph¶i lµ §é, Phót, Gi©y !";
}
}
: row {
: spacer { width = 7; }
: radio_button {
key = "khluu";
label = "Kh«ng L­u B¶n VÏ";
}
: radio_button {
key = "coluu";
label = "Cã L­u B¶n VÏ";
}
: spacer { width = 2; }
}
}
: boxed_column {
label = "Tû LÖ B¶n VÏ";
: column {
: spacer { width = 1; }
: radio_button {
key = "tylks";
label = "1/200";
}
: radio_button {
key = "tylos";
label = "1/500";
}
: radio_button {
key = "tylee";
label = "1/1000";
}
: radio_button {
key = "tylke";
label = "1/2000";
}
: radio_button {
key = "tyloe";
label = "1/5000";
}
}
}
}
}
: row {
: spacer { width = 32; }
: button {
label = "OK";
key = "accept";
width = 11;
}
: spacer { width = 3; }
cancel_button;
: spacer { width = 32; }
}
errtile;
}


  • 0

#2 MANHHUNGXDA

MANHHUNGXDA

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 926 Bài viết
Điểm đánh giá: 458 (tốt)

Đã gửi 23 December 2008 - 11:18 PM

Ồng up 2 file đó lên là xong
Kiểu này, nhìn đã thấy chán
  • 0
Hãy ước cho trọn 1 ước mơ!

#3 tnmtpc

tnmtpc

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 370 Bài viết
Điểm đánh giá: 206 (khá)

Đã gửi 24 December 2008 - 09:23 AM

Lisp này dân trắc địa cần lắm đây. Mình đã thử rồi, đúng là nó báo lỗi " error: quit / exit abort "
Chịu, mình Ko rành về lisp. Nhờ các chuyên gia lisp thôi!
  • 0

#4 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 24 December 2008 - 03:12 PM

Mình có Autolisp tự phun toạ độ các điểm nhưng không hiểu sao nhiều khi load nó lên nó lại cứ báo lỗi nên không sử dụng được. Cái này mình lấy của kỹ sư Bùi Công Khanh. Có ai biết xin chỉ giáo giúp mình với
Còn đây là File.DCL của nó

Dài quá. Bạn nói chi tiết hơn tác dụng của lisp này xem nào. Tôi không nghĩ phải làm một cái lisp dài thế này để xử lý công việc trên. Đọc hoa hết cả mắt. Ngay cả đoạn code đổi chữ thường ra chữ hoa đã thấy lằng nhằng rồi. <_<
  • 0

#5 elleHCSC

elleHCSC

    biết lệnh copy

  • Members
  • PipPipPip
  • 119 Bài viết
Điểm đánh giá: 98 (tàm tạm)

Đã gửi 24 December 2008 - 04:38 PM

Chưa biết nó ngô khoai thế nào nhưng thấy cái lisp này nó dài thật...oải
  • 0
Share for all, all will share !

--------------------
HTTP://WWW.HCSC.VN
HTTP://WWW.HCSC.COM.VN

#6 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 31 December 2008 - 11:57 AM

Mình có Autolisp tự phun toạ độ các điểm nhưng không hiểu sao nhiều khi load nó lên nó lại cứ báo lỗi nên không sử dụng được. Cái này mình lấy của kỹ sư Bùi Công Khanh. Có ai biết xin chỉ giáo giúp mình với
Còn đây là File.DCL của nó

Ối cha mẹ ơi,
Đọc xong cái lisp này chắc mất tết quá bác ạ, bác kiếm cái nào nó ngăn ngắn một tí hay là bác bảo bác Bùi Công Khanh chỉ giáo chứ chỉ nguyên cái việc đếm ngoặc đã xơi của em mấy mấy tiếng chửa xong bác ạ.
Thôi thì để ăn Tết cái đã bác nhẩy.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#7 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 31 December 2008 - 12:12 PM

Ối cha mẹ ơi,
Đọc xong cái lisp này chắc mất tết quá bác ạ, bác kiếm cái nào nó ngăn ngắn một tí hay là bác bảo bác Bùi Công Khanh chỉ giáo chứ chỉ nguyên cái việc đếm ngoặc đã xơi của em mấy mấy tiếng chửa xong bác ạ.
Thôi thì để ăn Tết cái đã bác nhẩy.


Để kiểm tra '(' ')' thì bạn có thể dùng cái này
http://www.cadviet.c...o...&hl=Notepad

Còn đọan code trên thì tôi mới nhìn cũng thấy chóang. Công việc của tôi kiểm tra code khỏang vài trăm nghìn dòng là chuyện bình thường, nhưng bao giờ cũng có thiết kế, comment và các function bao giờ cũng được chia nhỏ đến mức có thể.
Về tư duy lập trình thì bác Bùi Công Khanh này cũng tốt nhưng mà hình như chẳng biết lập kế họach gì cả
  • 0

#8 quanghuy181

quanghuy181

    biết vẽ arc

  • Members
  • PipPip
  • 41 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 05 January 2009 - 09:44 PM

Cái lisp này mục đích của nó là tự phun toạ độ các độ các điểm lên cad. Nếu như các điểm có ký hiệu sau đuôi là @ranh và kết thúc điểm có toạ độ có # Thì nó sẽ tự động nối các điểm này với nhau và tạo ra 2 lớp. 1 lớp là lớp điểm mia và một lớp là ranh đã nối theo mình chọn nối như thế nào. Cái này hay ở chỗ là nó cho chọn tỷ lệ bản đồ khi ta phun điểm lên và mỗi điểm mia sẽ được vẽ một vòng tròn theo đúng tỷ lệ đã chọn. Ví dụ như là tỷ lệ 1/1000 thì đường tròn có bán kính 2.5 còn tỷ lệ 1/2000 sẽ là 4.
  • 0