Đến nội dung


Hình ảnh
- - - - -

Lisp điền cao độ bị lỗi!!!


  • Please log in to reply
68 replies to this topic

#1 namhai

namhai

    biết vẽ rectang

  • Members
  • PipPip
  • 81 Bài viết
Điểm đánh giá: 18 (tàm tạm)

Đã gửi 25 December 2009 - 11:16 AM

e có đoạn lisp điền cao độ trắc ngang nhưng không hiểu sao không sử dụng được, mong các huynh sửa giúp

(defun c:goc ()
(setvar "cmdecho" 0)
;(setq osm (getvar "osmode"))
(if (= sc nil)(setq sc (getreal (strcat"\nChon ty le ve (=kt ve/kt Autocad):"))))
(prompt "\n*****Chu y: Ty le hien tai la*****:")(princ sc)
;(if (/= sc2 nil)(setq sc sc2))
;(command ".zoom" "e")
;(setq sspl (SSGET "c" '(10.5 20.25) '(10.5 27.5) (LIST(CONS 0 "lwpolyline"))));su dung khi ban ve co 1 cn o toa do co dinh
;(if (= th nil) (setq th (ssget "w" '(10.5 19.25 0) '(11.5 18.00 0) (list(cons 0 "TEXT")))))
;(command "zoom" "p")
(if (and (= a nil)(/= sspl nil))(setq a (cdr(assoc 10 (entget (ssname sspl 0))))))
(IF (= a nil)
(setq a (Getpoint "\n Chon mot diem lam chuan (co cao do):"))
(progn
(setq kitu nil)
(initget "Co Khong")
(setq kitu (getkword "\n Ban co chon lai diem chuan khong?[Co/Khong]:"))
(If (= kitu "Co")(setq a (Getpoint "\n Chon lai diem lam chuan (co cao do):")))
)
)

;(if (and(= nil g)(/= nil th)) (setq g (atof (cdr (ASSOC 1 (ENTGET (SSNAME th 0)))))))
(IF (= nil g)
(progn
(prompt "Khong co cao do tai vi tri can tim!")
(setq g (Getreal "\n Nhap cao do diem chuan [Bang ban phim/Chon tren man hinh]:" ))
(if (= nil g)
(progn
(setq sscd (entsel "\n Moi ban chon cao do tren man hinh:"))
(setq g (atof (cdr (assoc 1 (entget (car sscd))))))
(prompt (strcat "\n Cao do da chon:<"(rtos g 2 3) ">:"))
)
)
)
(If(= kitu "Co")
(progn
(setq g (Getreal "\n Nhap lai cao do diem chuan [Bang ban phim/Chon tren man hinh]:" ))
(if (= nil g)
(progn
(setq sscd (entsel "\n Moi ban chon lai cao do tren man hinh:"))
(setq g (atof (cdr (assoc 1 (entget (car sscd))))))
(prompt (strcat "\n Cao do da chon:<"(rtos g 2 3) ">:"))
)
)
)
)
)
)
  • 1
Hãy làm việc hết mình rồi mọi điều tốt đẹp sẽ đến với bạn.....

#2 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 28 December 2009 - 01:30 PM

Bận nên không có thời gian xem lại giúp bạn lisp trên. nhưng có cái này share cho bạn.
Lisp này dùng để ghi cao độ trên trắc ngang và khá đẹp với các trắc ngang chạy bằng nova. có thể chạy được trên cad14 vô tư :rolleyes:

(defun DXFcn (code elist)
(cdr (assoc code elist))
)
;============================================================
(prompt"\n[Cmd:CDX] - GHI CAO DO DIEM TREN TRAC NGANG by Thaistreetz - huuthais@yahoo.com\n")
;============================================================
(defun c:Cdx (); / DZ pt y ptside ang OT sc1 scale tx ty tx1 ty1)
(command "Undo" "BEGIN")
(if (not h) (setq h 1))
(if (= tx nil) (setq tx 1))
(if (= ty nil) (setq ty 1))
(setq h1 (getreal (strcat "\n Cao text < " (rtos h 2 2) " >: "))
tx1 (getreal (strcat "\nTy le theo phuong X <1/"(rtos tx 2 2)">: 1/"))
ty1 (getreal (strcat "\nTy le theo phuong Y <1/"(rtos ty 2 2)">: 1/")))
(if h1 (setq h h1))
(if tx1 (setq tx tx1))
(if ty1 (setq ty ty1))
(setq ATLAST (getvar "Attreq"))
(setq CMLAST (getvar "cmdecho"))
(setq OSLAST (getvar "OSMODE"))
(setq DZ (getvar "DIMZIN"))
(setq OT (getvar "ORTHOMODE"))
(setvar "ORTHOMODE" 0)
(setvar "cmdecho" 0)
(command "osmode" 99)
(setq pt0 (osnap (getpoint "Diem tim TN tu nhien") "end")) (print)
(setq x0 (car pt0) y0 (cadr pt0))
(setq ed (entget (car (entsel "\nChon cao do tim: "))))
(setq H0 (read (DXFcn 1 ed)))
(command "osmode" 15359)
(setq pt (getpoint "\nDiem chen: "))
(While (/= pt nil)
(command "osmode" 0)
(Progn
(setq ptside (getpoint "\nPhia chen:" pt)
ang (angle pt ptside))
(setq y (- (cadr pt) y0 (- H0)))
(setq x (- (car pt) x0))
(setvar "DIMZIN" 0)
(cond ((> x 0) (setq x (strcat "" (rtos (* x tx) 2 2))))
((< x 0) (setq x (rtos (abs (* x tx)) 2 2)))
((= x 0) (setq x "0.00")) )
(cond ((> y 0) (setq y (strcat "+" (rtos (* y ty) 2 2))))
((< y 0) (setq y (rtos (* y ty) 2 2)))
((= y 0) (setq y "%%p0.00")))
;(setq x (ustr 0 "Khoang cach: " x T))
;(setq y (ustr 0 "Cao do: " y T))
(progn
(if (AND (>= ang 0) (< ang (/ pi 2)))
(setq pt3 (list (car pt) (+ (cadr pt) (* 1.15 h)))
pt4 (list (car pt) (+ (cadr pt) (* 2.5 h)))
pt5 (list (+ (car pt4) (* 5 h)) (cadr pt4))
pt6 (list (+ (car pt4) (* 2.5 h)) (+ (cadr pt4) (* 0.8 h)))
pt7 (list (+ (car pt4) (* 2.5 h)) (- (cadr pt4) (* 0.8 h)))))
(if (AND (>= ang (/ pi 2)) (< ang pi))
(setq pt3 (list (car pt) (+ (cadr pt) (* 1.15 h)))
pt4 (list (car pt) (+ (cadr pt) (* 2.5 h)))
pt5 (list (- (car pt4) (* 5 h)) (cadr pt4))
pt6 (list (- (car pt4) (* 2.5 h)) (+ (cadr pt4) (* 0.8 h)))
pt7 (list (- (car pt4) (* 2.5 h)) (- (cadr pt4) (* 0.8 h)))))
(if (AND (>= ang pi) (< ang (+ pi (/ pi 2))))
(setq pt3 (list (car pt) (- (cadr pt) (* 1.15 h)))
pt4 (list (car pt) (- (cadr pt) (* 2.5 h)))
pt5 (list (- (car pt4) (* 5 h)) (cadr pt4))
pt6 (list (- (car pt4) (* 2.6 h)) (+ (cadr pt4) (* 0.8 h)))
pt7 (list (- (car pt4) (* 2.5 h)) (- (cadr pt4) (* 0.8 h)))))
(if (AND (>= ang (+ pi (/ pi 2))) (< ang (* 2 pi)))
(setq pt3 (list (car pt) (- (cadr pt) (* 1.15 h)))
pt4 (list (car pt) (- (cadr pt) (* 2.5 h)))
pt5 (list (+ (car pt4) (* 5 h)) (cadr pt4))
pt6 (list (+ (car pt4) (* 2.5 h)) (+ (cadr pt4) (* 0.8 h)))
pt7 (list (+ (car pt4) (* 2.5 h)) (- (cadr pt4) (* 0.8 h)))))
);progn
(command "pline" pt "w" 0 (* 0.45 h) pt3 "w" 0 0 pt4 pt5 ""
"text" "m" pt6 h 0 y
"text" "m" pt7 h 0 x)
(setvar "DIMZIN" DZ)
(command "osmode" 15359)
(setq pt (getpoint "\nDiem chen: "))
);progn
);while
(setvar "OSMODE" OSLAST)
(setvar "ORTHOMODE" OT)
(setvar "cmdecho" CMLAST)
(prompt"\n[GHI CAO DO TRAC NGANG] by Thaistreetz - huuthais@yahoo.com\n")
(command "Undo" "End")
(princ)
);end

- Chọn kích thước của text muốn ghi cao độ (nên chọn bằng hoặc nhỏ hơn 1 chút so với chiều cao các text cao độ trên trắc ngang của bạn)
- Chọn tỷ lệ vẽ của trắc ngang (Với Nova thì thường là 1:1 nên mình mặc định lisp sẽ lấy giá trị tỷ lệ X là 1/1 và Y là 1/1, nếu tỷ lệ khác thì bạn có thể nhập lại)
- Chọn điểm tim trắc ngang (điểm tim đường)
- Chọn cao độ của tim đường (pick chuột vào text cao độ của tim)
- Chọn các điểm cần tra cao độ.
- Phía chèn text cao độ: bạn có thể chèn cao độ theo 4 hướng. thử sẽ bít :(
  • 5

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#3 namhai

namhai

    biết vẽ rectang

  • Members
  • PipPip
  • 81 Bài viết
Điểm đánh giá: 18 (tàm tạm)

Đã gửi 28 December 2009 - 04:40 PM

Bận nên không có thời gian xem lại giúp bạn lisp trên. nhưng có cái này share cho bạn.
Lisp này dùng để ghi cao độ trên trắc ngang và khá đẹp với các trắc ngang chạy bằng nova. có thể chạy được trên cad14 vô tư :rolleyes:


(defun DXFcn (code elist)
(cdr (assoc code elist))
)
;============================================================
(prompt"\n[Cmd:CDX] - GHI CAO DO DIEM TREN TRAC NGANG by Thaistreetz - huuthais@yahoo.com\n")
;============================================================
(defun c:Cdx (); / DZ pt y ptside ang OT sc1 scale tx ty tx1 ty1)
(command "Undo" "BEGIN")
(if (not h) (setq h 1))
(if (= tx nil) (setq tx 1))
(if (= ty nil) (setq ty 1))
(setq h1 (getreal (strcat "\n Cao text < " (rtos h 2 2) " >: "))
tx1 (getreal (strcat "\nTy le theo phuong X <1/"(rtos tx 2 2)">: 1/"))
ty1 (getreal (strcat "\nTy le theo phuong Y <1/"(rtos ty 2 2)">: 1/")))
(if h1 (setq h h1))
(if tx1 (setq tx tx1))
(if ty1 (setq ty ty1))
(setq ATLAST (getvar "Attreq"))
(setq CMLAST (getvar "cmdecho"))
(setq OSLAST (getvar "OSMODE"))
(setq DZ (getvar "DIMZIN"))
(setq OT (getvar "ORTHOMODE"))
(setvar "ORTHOMODE" 0)
(setvar "cmdecho" 0)
(command "osmode" 99)
(setq pt0 (osnap (getpoint "Diem tim TN tu nhien") "end")) (print)
(setq x0 (car pt0) y0 (cadr pt0))
(setq ed (entget (car (entsel "\nChon cao do tim: "))))
(setq H0 (read (DXFcn 1 ed)))
(command "osmode" 15359)
(setq pt (getpoint "\nDiem chen: "))
(While (/= pt nil)
(command "osmode" 0)
(Progn
(setq ptside (getpoint "\nPhia chen:" pt)
ang (angle pt ptside))
(setq y (- (cadr pt) y0 (- H0)))
(setq x (- (car pt) x0))
(setvar "DIMZIN" 0)
(cond ((> x 0) (setq x (strcat "" (rtos (* x tx) 2 2))))
((< x 0) (setq x (rtos (abs (* x tx)) 2 2)))
((= x 0) (setq x "0.00")) )
(cond ((> y 0) (setq y (strcat "+" (rtos (* y ty) 2 2))))
((< y 0) (setq y (rtos (* y ty) 2 2)))
((= y 0) (setq y "%%p0.00")))
;(setq x (ustr 0 "Khoang cach: " x T))
;(setq y (ustr 0 "Cao do: " y T))
(progn
(if (AND (>= ang 0) (< ang (/ pi 2)))
(setq pt3 (list (car pt) (+ (cadr pt) (* 1.15 h)))
pt4 (list (car pt) (+ (cadr pt) (* 2.5 h)))
pt5 (list (+ (car pt4) (* 5 h)) (cadr pt4))
pt6 (list (+ (car pt4) (* 2.5 h)) (+ (cadr pt4) (* 0.8 h)))
pt7 (list (+ (car pt4) (* 2.5 h)) (- (cadr pt4) (* 0.8 h)))))
(if (AND (>= ang (/ pi 2)) (< ang pi))
(setq pt3 (list (car pt) (+ (cadr pt) (* 1.15 h)))
pt4 (list (car pt) (+ (cadr pt) (* 2.5 h)))
pt5 (list (- (car pt4) (* 5 h)) (cadr pt4))
pt6 (list (- (car pt4) (* 2.5 h)) (+ (cadr pt4) (* 0.8 h)))
pt7 (list (- (car pt4) (* 2.5 h)) (- (cadr pt4) (* 0.8 h)))))
(if (AND (>= ang pi) (< ang (+ pi (/ pi 2))))
(setq pt3 (list (car pt) (- (cadr pt) (* 1.15 h)))
pt4 (list (car pt) (- (cadr pt) (* 2.5 h)))
pt5 (list (- (car pt4) (* 5 h)) (cadr pt4))
pt6 (list (- (car pt4) (* 2.6 h)) (+ (cadr pt4) (* 0.8 h)))
pt7 (list (- (car pt4) (* 2.5 h)) (- (cadr pt4) (* 0.8 h)))))
(if (AND (>= ang (+ pi (/ pi 2))) (< ang (* 2 pi)))
(setq pt3 (list (car pt) (- (cadr pt) (* 1.15 h)))
pt4 (list (car pt) (- (cadr pt) (* 2.5 h)))
pt5 (list (+ (car pt4) (* 5 h)) (cadr pt4))
pt6 (list (+ (car pt4) (* 2.5 h)) (+ (cadr pt4) (* 0.8 h)))
pt7 (list (+ (car pt4) (* 2.5 h)) (- (cadr pt4) (* 0.8 h)))))
);progn
(command "pline" pt "w" 0 (* 0.45 h) pt3 "w" 0 0 pt4 pt5 ""
"text" "m" pt6 h 0 y
"text" "m" pt7 h 0 x)
(setvar "DIMZIN" DZ)
(command "osmode" 15359)
(setq pt (getpoint "\nDiem chen: "))
);progn
);while
(setvar "OSMODE" OSLAST)
(setvar "ORTHOMODE" OT)
(setvar "cmdecho" CMLAST)
(prompt"\n[GHI CAO DO TRAC NGANG] by Thaistreetz - huuthais@yahoo.com\n")
(command "Undo" "End")
(princ)
);end

- Chọn kích thước của text muốn ghi cao độ (nên chọn bằng hoặc nhỏ hơn 1 chút so với chiều cao các text cao độ trên trắc ngang của bạn)
- Chọn tỷ lệ vẽ của trắc ngang (Với Nova thì thường là 1:1 nên mình mặc định lisp sẽ lấy giá trị tỷ lệ X là 1/1 và Y là 1/1, nếu tỷ lệ khác thì bạn có thể nhập lại)
- Chọn điểm tim trắc ngang (điểm tim đường)
- Chọn cao độ của tim đường (pick chuột vào text cao độ của tim)
- Chọn các điểm cần tra cao độ.
- Phía chèn text cao độ: bạn có thể chèn cao độ theo 4 hướng. thử sẽ bít :(

Bác Thaistreet à, Lisp của bác rất hay, lisp này dùng để tra cao độ thì ổn rồi, nhưng bác có thể giúp e vấn đề này không, vì nhiều lúc e phải sửa trắc ngang bằng Cad (chứ không sửa trong Nova) bằng cách Stretch đường tự nhiên tại các k/c lẻ nên tất nhiên cao độ cũng thay đổi, giờ e đang làm thủ công băng cách Di rồi lại +,-.. để tính lại cao độ rồi lại edit...hic!Có cách nào có thể tự động hoá việc này không, mong các bác giúp đỡ. ý tưởng của e có thể là :
- Chọn cao độ tại tim đường làm chuẩn
- sau đó pick vào các điểm mình muốn chèn(Các điểm mình đã thay đổi cao độ)
- Chọn text mình muốn thay thế(Là text cao độ cũ)
P/s : E chỉ thay đổi cao độ thôi, còn khoảng cách lẻ vẫn giữ nguyên nên ko cần quan tâm đến k/c lẻ
Rất mong nhận được sự giúp đỡ của các bác, thanks alot!!
  • 1
Hãy làm việc hết mình rồi mọi điều tốt đẹp sẽ đến với bạn.....

#4 duyngoc

duyngoc

    biết vẽ pline

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

Đã gửi 27 December 2012 - 08:08 AM

Xin lỗi cả nhà, vì mình không biết cách gửi bài mới lên diễn đàn nên phải dùng hạ sách này.
Mình đang dùng lisp ghi cao độ (lệnh CDX) mình thấy lisp này rất hay, nhưng nếu có thêm chức năng xuất sang excel nữa thì quá tuyệt. Nhân đây mình xin nhờ các cao thủ giúp mình được không?
1. Dùng lisp (CDX) như bình thường
2. Khi mình Pick vào điểm nào thì nó tự động liên kết và xuất ra excel cao độ, khoảng cách luôn hoặc tạo bảng giống như lisp tính diện tích của bác Thaistrees viết thì hay biết mấy, đỡ phải dò lại và nhập tay mất công.
Mong các cao thủ quan tâm giúp đỡ. đây là lisp mình đang dùnghttp://www.cadviet.c...57480_cdx_1.lsp
  • 0

#5 duyngoc

duyngoc

    biết vẽ pline

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

Đã gửi 27 December 2012 - 09:26 AM

Các cao thủ giúp hậu bối với!
  • 0

#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 27 December 2012 - 10:02 AM

Các cao thủ giúp hậu bối với!

Hề hề hề,
Muốn giúp thì bạn phải gửi cả bản vẽ trước và sau khi chạy lisp lên thì mọi người mới xem và test được. mặt khác bạn cũng cần cho biết cấu trúc của file kết quả chứ.
Nếu không thì không phải ai cũng hiểu đúng được cái bạn cần đâu.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#7 duyngoc

duyngoc

    biết vẽ pline

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

Đã gửi 27 December 2012 - 10:21 AM

Đúng rồi mình quên mất., đây là file mình đang làm http://www.cadviet.c...80_tnkm2km3.rar. Mong bác Bình và các cao thủ giúp đỡ, cảm ơn các bác! còn đây là lisp ( CDX) mình đang dùnghttp://www.cadviet.c...57480_cdx_2.lsp
  • 0

#8 duyngoc

duyngoc

    biết vẽ pline

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

Đã gửi 27 December 2012 - 10:54 AM

Các cao thủ đi đâu hết rồi, ra tay giúp đệ với!
  • 0

#9 NguyenNgocSon

NguyenNgocSon

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 368 Bài viết
Điểm đánh giá: 39 (tàm tạm)

Đã gửi 27 December 2012 - 11:06 AM

Theo tôi bạn nên để chế độ Textstyle hiện hành có chiều cao là 0.
Thi thoảng có một số lisp lỗi như thế nhé !
  • 0

#10 duyngoc

duyngoc

    biết vẽ pline

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

Đã gửi 27 December 2012 - 11:15 AM

Cảm ơn bạn, nhưng mình làm thế rồi vẫn không được. Mong các cao thủ quan tâm! đây là file mình đang làm http://www.cadviet.c...80_tnkm2km3.rar. Mong bác Bình và các cao thủ giúp đỡ, cảm ơn các bác! còn đây là lisp ( CDX) mình đang dùnghttp://www.cadviet.c...57480_cdx_2.lsp
  • 0

#11 duyngoc

duyngoc

    biết vẽ pline

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

Đã gửi 27 December 2012 - 01:10 PM

Xin lỗi cả nhà, vì mình không biết cách gửi bài mới lên diễn đàn nên phải dùng hạ sách này.
Mình đang dùng lisp ghi cao độ (lệnh CDX) mình thấy lisp này rất hay, nhưng nếu có thêm chức năng xuất sang excel nữa thì quá tuyệt. Nhân đây mình xin nhờ các cao thủ giúp mình được không?
1. Dùng lisp (CDX) như bình thường
2. Khi mình Pick vào điểm nào thì nó tự động liên kết và xuất ra excel cao độ, khoảng cách luôn hoặc tạo bảng giống như lisp tính diện tích của bác Thaistrees viết thì hay biết mấy, đỡ phải dò lại và nhập tay mất công.
Mong các cao thủ quan tâm giúp đỡ. đây là lisp mình đang dùnghttp://www.cadviet.c...57480_cdx_1.lsp
http://www.cadviet.c...80_tnkm2km3.rar. Mong bác Bình và các cao thủ giúp đỡ, cảm ơn các bác!
  • 0

#12 duyngoc

duyngoc

    biết vẽ pline

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

Đã gửi 27 December 2012 - 02:25 PM

Sao không thấy ai giúp đỡ hết vậy? hịc
  • 0

#13 duyngoc

duyngoc

    biết vẽ pline

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

Đã gửi 27 December 2012 - 04:28 PM

Mong các cao thủ giúp đỡ!
  • 0

#14 duyngoc

duyngoc

    biết vẽ pline

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

Đã gửi 27 December 2012 - 04:49 PM

Bác Bình đâu rồi, chú up file lên rồi, nhờ các bác xem thử!
  • 0

#15 duyngoc

duyngoc

    biết vẽ pline

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

Đã gửi 28 December 2012 - 09:34 AM

Sao không thấy ai giúp đỡ vậy?
  • 0

#16 duyngoc

duyngoc

    biết vẽ pline

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

Đã gửi 28 December 2012 - 01:32 PM

Khó quá hay sao, cao thủ đâu hết rùi!
  • 0

#17 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 28 December 2012 - 02:20 PM

Khó quá hay sao, cao thủ đâu hết rùi!

Hề hề hề,
1/- Cao thủ hay thấp thủ mà bạn cứ đòi có trả lời ngay thì có nhẽ sẽ khó mà toại nguyện được. Mọi người ai cũng có việc để làm chứ không phải chỉ có mỗi việc ngồi chờ để trả lời bạn cho kịp thời.
2/- Khó hay không khó thì bạn cũng cứ phải chờ có người đủ thời gian rảnh để nghiên cứu giúp bạn chứ không phải bạn cứ giở trò khích bác như vậy là sẽ đạt được nguyện vọng đâu.
3/- Mọi người cũng như bạn đều phải ưu tiên công việc kiếm cơm của họ trước rồi mới nói tới chuyện tham gia vào diễn đàn. Không có cơm thì chả thể sống mà nói chuyện giúp ai cả đâu.
4/- Đây có thể là cái bạn cần mà cũng có thể bạn chả cần nữa. Mình đã sửa theo thiển ý của mình dựa trên yêu cầu của bạn, Nếu thấy dùng được thì bạn cứ dùng, còn nếu thấy chưa được thì cứ để đó, chắc sẽ có người cần. Cái chi chưa được thì hãy post lên, nếu rảnh mình sẽ sửa tiếp.
http://www.cadviet.c...57480_cdx_1.lsp



;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=15836
(defun DXFcn (code elist)
(cdr (assoc code elist))
)
;============================================================
(prompt"\n[Cmd:CDX] - GHI CAO DO DIEM TREN TRAC NGANG by Thaistreetz - huuthais@yahoo.com\n")
;============================================================
(defun c:Cdx (); / DZ pt y ptside ang OT sc1 scale tx ty tx1 ty1 p0 p1 p2 p3 p4 p5 p6 p7 fn f)
(command "Undo" "BEGIN")
(if (not h) (setq h 1))
(if (= tx nil) (setq tx 1))
(if (= ty nil) (setq ty 1))
(setq h1 (getreal (strcat "\n Cao text < " (rtos h 2 2) " >: "))
tx1 (getreal (strcat "\nTy le theo phuong X <1/"(rtos tx 2 2)">: 1/"))
ty1 (getreal (strcat "\nTy le theo phuong Y <1/"(rtos ty 2 2)">: 1/")))
(if h1 (setq h h1))
(if tx1 (setq tx tx1))
(if ty1 (setq ty ty1))
(setq ATLAST (getvar "Attreq"))
(setq CMLAST (getvar "cmdecho"))
(setq OSLAST (getvar "OSMODE"))
(setq DZ (getvar "DIMZIN"))
(setq OT (getvar "ORTHOMODE"))
(setvar "ORTHOMODE" 0)
(setvar "cmdecho" 0)
(command "osmode" 99)
(setq pt0 (osnap (getpoint "Diem tim TN tu nhien") "end")) (print)
(setq x0 (car pt0) y0 (cadr pt0))
(setq ed (entget (car (entsel "\nChon cao do tim: "))))
(setq H0 (read (DXFcn 1 ed)))
(command "osmode" 15359)

(setq p0 (getpoint "\n Chon diem dat bang tong hop"))
(styleset)
(command "osmode" 0)
(command "text" "j" "mc" (list (+ (car p0) (* 25 h)) (+ (cadr p0) (* 2 h))) (* 2 h) 0 "BANG TONG HOP")
(command "text" "j" "mc" (list (+ (car p0) (* 5 h)) (- (cadr p0) (* 1.5 h))) h 0 "STT diem")
(command "text" "j" "mc" (list (+ (car p0) (* 20 h)) (- (cadr p0) (* 1.5 h))) h 0 "K.cach toi tim (m)")
(command "text" "j" "mc" (list (+ (car p0) (* 40 h)) (- (cadr p0) (* 1.5 h))) h 0 "Cao do (m)")
(setq p1 (list (+ (car p0) (* 10 h)) (cadr p0))
p2 (polar p0 0 (* 30 h))
p3 (polar p0 0 (* 50 h))
p4 (polar p3 (* 1.5 pi) (* 3 h))
p5 (polar p2 (* 1.5 pi) (* 3 h))
p6 (polar p1 (* 1.5 pi) (* 3 h))
p7 (polar p0 (* 1.5 pi) (* 3 h))
)
(command "pline" p0 p3 p4 p7 "c")
(command "pline" p1 p6 "")
(command "pline" p2 p5 "")
(setq p0 p7)
(command "osmode" 15359)
(setq fn (getfiled "Select a File" "" "csv" 1))
(setq f (open fn "w"))
(write-line " STT diem, K.cach toi tim (m), Cao do (m)" f)
(setq i 1)

(setq pt (getpoint "\nDiem chen: "))
(While (/= pt nil)
(command "osmode" 0)
(Progn
(setq ptside (getpoint "\nPhia chen:" pt)
ang (angle pt ptside))
(setq y (- (cadr pt) y0 (- H0)))
(setq x (- (car pt) x0))
(setvar "DIMZIN" 0)
(cond ((> x 0) (setq x (strcat "" (rtos (* x tx) 2 2))))
((< x 0) (setq x (rtos (abs (* x tx)) 2 2)))
((= x 0) (setq x "0.00")) )
(cond ((> y 0) (setq y (strcat "+" (rtos (* y ty) 2 2))))
((< y 0) (setq y (rtos (* y ty) 2 2)))
((= y 0) (setq y "%%p0.00")))
;;;;(setq x (ustr 0 "Khoang cach: " x T))
;;;;(setq y (ustr 0 "Cao do: " y T))
(progn
(if (AND (>= ang 0) (< ang (/ pi 2)))
(setq pt3 (list (car pt) (+ (cadr pt) (* 1.15 h)))
pt4 (list (car pt) (+ (cadr pt) (* 2.5 h)))
pt5 (list (+ (car pt4) (* 5 h)) (cadr pt4))
pt6 (list (+ (car pt4) (* 2.5 h)) (+ (cadr pt4) (* 0.8 h)))
pt7 (list (+ (car pt4) (* 2.5 h)) (- (cadr pt4) (* 0.8 h)))))
(if (AND (>= ang (/ pi 2)) (< ang pi))
(setq pt3 (list (car pt) (+ (cadr pt) (* 1.15 h)))
pt4 (list (car pt) (+ (cadr pt) (* 2.5 h)))
pt5 (list (- (car pt4) (* 5 h)) (cadr pt4))
pt6 (list (- (car pt4) (* 2.5 h)) (+ (cadr pt4) (* 0.8 h)))
pt7 (list (- (car pt4) (* 2.5 h)) (- (cadr pt4) (* 0.8 h)))))
(if (AND (>= ang pi) (< ang (+ pi (/ pi 2))))
(setq pt3 (list (car pt) (- (cadr pt) (* 1.15 h)))
pt4 (list (car pt) (- (cadr pt) (* 2.5 h)))
pt5 (list (- (car pt4) (* 5 h)) (cadr pt4))
pt6 (list (- (car pt4) (* 2.6 h)) (+ (cadr pt4) (* 0.8 h)))
pt7 (list (- (car pt4) (* 2.5 h)) (- (cadr pt4) (* 0.8 h)))))
(if (AND (>= ang (+ pi (/ pi 2))) (< ang (* 2 pi)))
(setq pt3 (list (car pt) (- (cadr pt) (* 1.15 h)))
pt4 (list (car pt) (- (cadr pt) (* 2.5 h)))
pt5 (list (+ (car pt4) (* 5 h)) (cadr pt4))
pt6 (list (+ (car pt4) (* 2.5 h)) (+ (cadr pt4) (* 0.8 h)))
pt7 (list (+ (car pt4) (* 2.5 h)) (- (cadr pt4) (* 0.8 h)))))
);progn
(command "pline" pt "w" 0 (* 0.45 h) pt3 "w" 0 0 pt4 pt5 ""
"text" "m" pt6 h 0 y
"text" "m" pt7 h 0 x)
(setvar "DIMZIN" DZ)
(command "osmode" 15359)

);progn

(command "osmode" 0)
(command "text" "j" "mc" (list (+ (car p0) (* 5 h)) (- (cadr p0) (* 1.5 h))) h 0 (rtos i 2 0))
(command "text" "j" "mc" (list (+ (car p0) (* 20 h)) (- (cadr p0) (* 1.5 h))) h 0 x)
(command "text" "j" "mc" (list (+ (car p0) (* 40 h)) (- (cadr p0) (* 1.5 h))) h 0 y)
(setq p1 (list (+ (car p0) (* 10 h)) (cadr p0))
p2 (polar p0 0 (* 30 h))
p3 (polar p0 0 (* 50 h))
p4 (polar p3 (* 1.5 pi) (* 3 h))
p5 (polar p2 (* 1.5 pi) (* 3 h))
p6 (polar p1 (* 1.5 pi) (* 3 h))
p7 (polar p0 (* 1.5 pi) (* 3 h))
)
(command "pline" p0 p3 p4 p7 "c")
(command "pline" p1 p6 "")
(command "pline" p2 p5 "")
(setq p0 p7)
(write-line (strcat (rtos i 2 0) (chr 44) x (chr 44) y) f)
(setq i (1+ i))
(command "osmode" 15359)
(setq pt (getpoint "\nDiem chen: "))

);while
(close f)
(setvar "OSMODE" OSLAST)
(setvar "ORTHOMODE" OT)
(setvar "cmdecho" CMLAST)
(prompt"\n[GHI CAO DO TRAC NGANG] by Thaistreetz - huuthais@yahoo.com\n")
(command "Undo" "End")
(princ)
);end

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun styleset (/ h0 stl)
(setq stl (getvar "textstyle")
h0 (getvar "textsize"))
(if (/= h0 0) (command "style" stl "" 0 "" "" "" "" ""))
)

Chúc bạn vui khi tham gia diễn đàn
  • 2
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#18 duyngoc

duyngoc

    biết vẽ pline

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

Đã gửi 29 December 2012 - 07:56 AM

Ôi hay quá, nhưng lisp còn có nhược điểm là mỗi khi đánh lệnh là nó hỏi tỷ lệ, cao chữ. Bác có thể sửa làm so chỉ hỏi cao chữ với tỷ lệ bản vẽ có 1 lần đầu sau khi đánh lệnh, với khi xuất sang cel thì nó không đúng với số liệu trong bảng được tạo trong cad. Cảm ơn bác Bình và ban quản trị diễn đàn. Chúc các bác sứ khỏe!
  • 0

#19 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 30 December 2012 - 09:20 AM

Ôi hay quá, nhưng lisp còn có nhược điểm là mỗi khi đánh lệnh là nó hỏi tỷ lệ, cao chữ. Bác có thể sửa làm so chỉ hỏi cao chữ với tỷ lệ bản vẽ có 1 lần đầu sau khi đánh lệnh, với khi xuất sang cel thì nó không đúng với số liệu trong bảng được tạo trong cad. Cảm ơn bác Bình và ban quản trị diễn đàn. Chúc các bác sứ khỏe!

Hề hề hề,
1/- Cái nhược điểm đó là do chính cái lisp mà bạn đã khen là dùng tốt gửi lên, hoàn toàn không có yêu cầu gì về việc chỉnh sửa điều đó cả. Do vậy chớ có kêu ca gì về điều đó. Hãy tự rút kinh nghiệm cho mình về cách trình bày vấn đề.
Việc chỉnh sửa điều đó không khó nhưng mình không làm để bạn hiểu rằng đừng coi diễn đàn là cái nơi bạn muốn gì phải được cái đó.
2/- Mình thấy số liệu xuất sang Excel hoàn toàn trùng khớp với số liệu trên bảng tổng hợp. Không hiểu cái không đúng của bạn có nghĩa gì??? Hãy gửi cái đúng và không đúng lên may ra sẽ có lời giải đáp.
Hề hề hề,
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#20 duyngoc

duyngoc

    biết vẽ pline

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

Đã gửi 31 December 2012 - 08:44 AM

Thanhk bác Bình nhiều, mình sẽ rút kinh nghiệm. Nhưng mình không nghĩ" Diễn đàn là nơi.. như bác nói". Vì mình thấy diễn đàn hay và bổ ích lại có mục viết lisp theo yêu cầu. Nên mình mới dám nhờ các bác, nói thật nhờ mà các bác đã giúp như thế thì cũng tốt lắm rồi, còn mong cái hoàn thiện hơn thì ai chả muốn phải không bác? Chúc các bác Năm mới sức khỏe và thành công. Có cách nào để có dịp thank trực tiếp các bác không nhỉ?
  • 1