Đến nội dung


Hình ảnh
- - - - -

Xin lisp nội suy cao độ ?


  • Please log in to reply
19 replies to this topic

#1 hhhhgggg

hhhhgggg

    biết dimedit

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

Đã gửi 11 February 2009 - 07:39 AM

Bác nào có Lisp nội suy cao độ chạy theo kiểu : Chọn điểm có cao độ,chọn text cao độ của điểm đó,chọn điểm cẩn tìm cao độ ==> chọn vị trí chèn cao độ hoặc vị trí ghi đè cao độ . ok Bác nào có thì cho em xin nhé !
  • 0
Hoàng Giang

#2 nataca

nataca

    biết lệnh adcenter

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

Đã gửi 11 February 2009 - 09:58 AM

Bác nào có Lisp nội suy cao độ chạy theo kiểu : Chọn điểm có cao độ,chọn text cao độ của điểm đó,chọn điểm cẩn tìm cao độ ==> chọn vị trí chèn cao độ hoặc vị trí ghi đè cao độ . ok Bác nào có thì cho em xin nhé !

Bác NguyenHoanh đã viết 1 cái lisp như thế này rồi đấy. Bạn thử tìm xem sao
  • 0

#3 redsea_tq

redsea_tq

    biết lệnh erase

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

Đã gửi 20 December 2010 - 07:48 AM

Bác nào có Lisp nội suy cao độ chạy theo kiểu : Chọn điểm có cao độ,chọn text cao độ của điểm đó,chọn điểm cẩn tìm cao độ ==> chọn vị trí chèn cao độ hoặc vị trí ghi đè cao độ . ok Bác nào có thì cho em xin nhé !


Mình chỉ có VBA thôi, bạn có dùng được không?
http://www.cadviet.c...ew_folder_4.rar
  • 0

#4 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 995 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 20 December 2010 - 09:03 AM

Bác nào có Lisp nội suy cao độ chạy theo kiểu : Chọn điểm có cao độ,chọn text cao độ của điểm đó,chọn điểm cẩn tìm cao độ ==> chọn vị trí chèn cao độ hoặc vị trí ghi đè cao độ . ok Bác nào có thì cho em xin nhé !

Chắc có lẽ cái này bạn cần tìm kiếm. Có rất nhiều kiểu nội suy độ cao theo cách khác nhau. Bạn dùng thử nhé
(setq sizetxt 3.0)
(setq sizetxt1 3.0)
(setq gxblk 0.0)
(setq Code "ZAP")
(setq a "k1")
(prompt "\nXu ly so lieu - Writen by ZAP")
(prompt "\nCac lenh cua CT: c0=Chen0/T0=Text0/C1=chen1/c2=chen2/T1=Text1/Chen2/T2=Text2/Chen2n/T2N=Text2n/FixZt/FixZb ")
;---------------------------------------
(defun chontt ()
(setq Stt (getint "\nSTT diem chen (Point <1>): "))
(if (= Stt nil) (setq Stt 1))
)
;--------------------------------------
(defun ghitext ()
(command "style" "Elevtxt" "" 0 "" "" "" "" "")
(command "Layer" "make" Lay "" "Color" Mau )
;(command "Point" pt3)
(command "Text" "J" "MC" pt3 sizetxt1 gxblk1 Caodo)
)
;--------------------------------------
(defun diem1 ()
(setq x1 (car pt1))
(setq y1 (cadr pt1))
(setq z1 (caddr pt1))
)
;--------------------------------------
(defun diem2 ()
(setq xx (car pt2))
(setq yy (cadr pt2))
(setq zz (caddr pt2))
)
;--------------------------------------
(defun chendiem()
(prompt "\nWriten by ZAP - TEDI WECCo")
(setq pt3 (getpoint "\nVi tri chen diem : "))
(setq x3 (car pt3))
(setq y3 (cadr pt3))
(setq aa (list x1 y1))
(setq bb (list x2 y2))
(setq cc (list x3 y3))
(setq d1 (distance aa cc))
(setq d2 (distance bb cc))
(setq d (+ d1 d2))
(setq dh (- z2 z1))
(setq dhz (* dh (/ d1 d)))
(setq z3 (+ Z1 dhz))
(setq Caodo (rtos z3 2 2))
(setq pt3 (list x3 y3 z3))
)
;--------------------------------------da sua
(defun chondiem ()
(prompt "\nWriten by ZAP - TEDI WECCo")
(setq pt1 (getpoint "\nChon diem thu nhat : "))
(setq x1 (car pt1))
(setq y1 (cadr pt1))
(setq z1 (caddr pt1))
(setq pt2 (getpoint "\nChon diem thu hai : "))
(setq x2 (car pt2))
(setq y2 (cadr pt2))
(setq z2 (caddr pt2))
)
;--------------------------------------
(defun c:c0()
(prompt "\nThiet lap thong so ban dau - Writen by ZAP")
(setq sizetxt (getreal "\nChieu cao Chu : "))
(setq gxblk (getreal "\nGoc xoay <0>: "))
(if (= gxblk nil) (setq gxblk 0))
(setq Code (getstring "\nCode diem chen (Descp) : "))
)
;--------- Chen 1 diem bat ky -----------
(defun c:c1()
(prompt "\nChen diem bat ky - Writen by ZAP")
(chontt)
(while
(progn
(command "osnap" "off")
(prompt "\nChen diem bat ky")
(prompt "\nWriten by ZAP - TEDI WECCo")
(setq pt1 (getpoint "\nVi tri chen diem : "))
(setq z1a (getreal "\nCho cao do (Elev) : " ))
(diem1)
(setq pt3 (list x1 y1 z1a))
(setq Caodo (rtos z1a 2 2))
(command "insert" "D_chitiet" pt3 sizetxt sizetxt gxblk Stt Caodo Code)
(setq Stt (+ Stt 1))
)
)
)
;--------- Chen 1 diem bat ky -----------
(defun c:cc1()
(prompt "\nChen diem bat ky - Writen by ZAP")
(chontt)
(while
(progn
(command "osnap" "nearest,end,INTERSECTION")
(prompt "\nChen diem bat ky")
(prompt "\nWriten by ZAP - TEDI WECCo")
(setq pt2 (getpoint "\nVi tri chen diem : "))
(diem2)
(command "osnap" "off")
(setq z2a (getreal "\nCho cao do (Elev) : " ))
(setq pt3 (list xx yy z2a))
(setq Caodo2 (rtos z2a 2 2))
(command "insert" "D_chitiet" pt3 sizetxt sizetxt gxblk Stt Caodo2 Code)
(setq Stt (+ Stt 1))
)
)
)

;--------- Chen 1 diem moc -----------
(defun c:chenmoc()
(prompt "\nChen diem bat ky - Writen by ZAP")
(chontt)
(while
(progn
(command "osnap" "center,INTERSECTION")
(prompt "\nChen diem bat ky")
(prompt "\nWriten by ZAP - TEDI WECCo")
(setq pt1 (getpoint "\nVi tri chen diem : "))
(setq z1a (getreal "\nCho cao do (Elev) : " ))
(setq Code1 (getstring "\nCode diem chen (Descp) : "))
(diem1)
(setq pt3 (list x1 y1 z1a))
(setq Caodo (rtos z1a 2 2))
(command "insert" "D_tramdo1" pt3 sizetxt sizetxt gxblk Stt Caodo Code1)
(setq Stt (+ Stt 1))
)
)
)

;----------- Chen 1 diem tu 2 diem biet truoc -----------
(defun c:c2()
(prompt "\nChen 1 diem tu 2 diem da biet - Writen by ZAP")
(chontt)
(while
(progn
(command "osnap" "center,node")
(prompt "\nChen 1 diem tu 2 diem da biet")
(chondiem)
(command "osnap" "off")
(prompt "\nChen 1 diem tu 2 diem da biet")
(chendiem)
(command "insert" "D_chitiet" pt3 sizetxt sizetxt gxblk Stt Caodo Code)
(setq Stt (+ Stt 1))
)
)
)
;----------- Chen diem lien tuc tu 2 diem biet truoc -----------
(defun c:c2n()
(prompt "\nChen diem lien tuc tu 2 diem da biet - Writen by ZAP")
(chontt)
(command "osnap" "center,node")
(prompt "\nChen diem lien tuc tu 2 diem da biet")
(chondiem)
(while
(progn
(command "osnap" "off")
(prompt "\nChen diem lien tuc tu 2 diem da biet")
(chendiem)
(command "insert" "D_chitiet" pt3 sizetxt sizetxt gxblk Stt Caodo Code)
(setq Stt (+ Stt 1))
)
)
)
;---------------------------------------
;----------- Chen diem lien tuc tu 2 diem biet truoc Dong sua-----------
(defun c:cnn()
(prompt "\nChen diem lien tuc tu 2 diem da biet - Writen by ZAP")
(chontt)
(command "osnap" "center,node")
(prompt "\nChen diem lien tuc tu 2 diem da biet")
(chondiem)
(while
(progn
(command "osnap" "nearest")
(prompt "\nChen diem lien tuc tu 2 diem da biet")
(chendiem)
(command "osnap" "off")
(command "insert" "D_chitiet" pt3 1 1 0 Stt Caodo Code)
(setq Stt (+ Stt 1))
)
)
)
;---------------------------------------Dong sua
; chen 1 diem cato_point1
(defun c:ct1()
(prompt "\nChen diem cato_point bat ky - prepared by bgngoduy")
(while
(progn
(command "osnap" "nearest,end,INTERSECTION")
(prompt "\nChen diem cato_point bat ky")
(prompt "\nWriten by bgngoduy")
(setq pt2 (getpoint "\nVi tri chen diem cato : "))
(diem2)
(command "osnap" "off")
(setq z2a (getreal "\nCho cao do (Elev) : " ))
(setq pt3 (list xx yy z2a))
(setq Caodo2 (rtos z2a 2 2))
;(command "insert" "D_chitiet" pt3 sizetxt sizetxt gxblk Stt Caodo Code)
(command "insert" "cato_point" pt3 1 1 0 Caodo2)
(command "explode" "l")
(setq Stt (+ Stt 1))
)
)
)
;ket thuc chen 1 diem cato_point1
;----------- Chen 1 diem cato_point tu 2 diem 3D biet truoc -----------
(defun c:ct2()
(prompt "\nChen 1 diem cato_point tu 2 diem 3D da biet - Prepred by bgngoduy")
(while
(progn
(command "osnap" "center,node")
(prompt "\nChen 1 diem tu 2 diem da biet")
(chondiem)
(command "osnap" "off")
(prompt "\nChen 1 diem cato_point tu 2 diem 3D da biet")
(chendiem)
(command "insert" "cato_point" pt3 1 1 0 Caodo)
(command "explode" "l")
(setq Stt (+ Stt 1))
)
)
)
;----------- Chen diem lien tuc cac diem cato_point tu 2 diem 3D biet truoc -----------
(defun c:ct2n()
(prompt "\nChen lien tuc cac diem cato_point tu 2 diem 3D da biet - Prepared by bgngoduy")
;;;; (command "osnap" "center,node")
(command "osnap" "insert")
(prompt "\nChen lien tuc cac diem cato_point tu 2 diem 3D da biet")
(chondiem)
(while
(progn
(command "osnap" "off")
(prompt "\nChen lien tuc cac diem cato_point tu 2 diem 3D da biet")
(chendiem)
(command "insert" "cato_point" pt3 sizetxt sizetxt gxblk Caodo)
(command "explode" "l")
(setq Stt (+ Stt 1))
)
)
)
;-----------Ket thuc chen diem cato_point
(defun c:fixct ()
(command "osnap" "center,node,insert")
(while (/= a "k")
(progn
(prompt "\nGhi cao do -> cato_point")
(prompt "\nRepaired by bgngoduy")
(setq pt1 (getpoint "\nVi tri diem chon : "))
(diem1)
(setq pt1 (list x1 y1 z1))
(setq Caodo (rtos z1 2 2))
(command "style" "Elevtxt" "" 0 "" "" "" "" "")
(command "Layer" "make" Lay "" "Color" Mau )
(command "insert" "cato_point" pt1 sizetxt sizetxt gxblk Caodo)
(command "explode" "l")
)
)
)
;chen diem cato_point tai vi tri diem 3D da biet
(defun c:fixZt ()
(command "osnap" "center,node")
(while (/= a "k")
(progn
(prompt "\nGhi cao do -> TEXT")
(prompt "\nRepaired by ZAP - TEDI WECCo")
(setq pt1 (getpoint "\nVi tri diem chon : "))
(diem1)
(setq pt1 (list x1 y1 z1))
(setq Caodo (rtos z1 2 2))
(command "style" "Elevtxt" "" 0 "" "" "" "" "")
(command "Layer" "make" Lay "" "Color" Mau )
(command "Text" pt1 sizetxt1 gxblk1 Caodo)
)
)
)
;--------------------------------------da sua
(defun c:budc ()
(setq Stt 1)
(while (/= a "k")
(progn
(prompt "\nGhi cao do -> BLOCK")
(prompt "\nRepaired by ZAP - TEDI WECCo")
(command "osnap" "center,node,insert")
(command "osnap" "center,node,insert")
(prompt "\nbu do cao")
(setq pt1 (getpoint "\nVi tri diem chon : "))
(command "osnap" "off")
(setq deltah (getreal "\ngiam/tang do cao : " ))
(diem1)
(setq pt1 (list x1 y1 (+ z1 deltah)))
(setq pt2 (list x1 (+ y1 0.05) (+ z1 deltah)))
(setq pt3 (list x1 (- y1 0.05) (+ z1 deltah)))
(setq pt4 (list (+ x1 0.05) y1 (+ z1 deltah)))
(setq pt5 (list (- x1 0.05) y1 (+ z1 deltah)))
(setq ss1 (ssget pt1))
(setq dc2 (+ z1 deltah))
(setq Caodo (rtos dc2 2 2))
(command "erase" "c" pt2 pt5 "")
(command "Text" "J" "MC" pt1 sizetxt1 gxblk1 Caodo)
; (command "insert" "D_chitiet" pt1 sizetxt sizetxt gxblk Stt Caodo Code)
(setq Stt (+ Stt 1))
)
)
)
;---------------------------------------
(defun c:T0()
(setq sizetxt1 (getreal "\nChieu cao cua Text : "))
(if (= sidetxt1 nil) (setq sidetxt1 1))
(setq gxblk1 (getreal "\nGoc xoay <0>: "))
(if (= gxblk1 nil) (setq gxblk1 0))
(setq Lay (getstring "\nChon Layer : "))
(setq Mau (getint "\nMau sac ( Color ): "))
)
;----------- Chen diem lien tuc tu 2 diem biet truoc -----------
(defun c:t2n()
(prompt "\nChen diem lien tuc tu 2 diem da biet - Writen by ZAP")
(setq Stt 1)
(command "osnap" "insert,node")
(prompt "\nChen diem lien tuc tu 2 diem da biet")
(chondiem)
(while
(progn
(command "osnap" "off")
(prompt "\nChen diem lien tuc tu 2 diem da biet")
(chendiem)
(ghitext)
(setq Stt (+ Stt 1))
)
)
)
;----------- Chen 1 diem tu 2 diem biet truoc -----------
(defun c:T2()
(prompt "\nChen 1 diem tu 2 diem da biet - Writen by ZAP")
(setq Stt 1)
(while
(progn
(command "osnap" "center,node,insert,nearest")
(prompt "\nChen 1 diem tu 2 diem da biet")
(chondiem)
(command "osnap" "off")
(prompt "\nChen 1 diem tu 2 diem da biet")
(chendiem)
(ghitext)
(setq Stt (+ Stt 1))
)
)
)
;--------- Chen 1 diem bat ky -----------
(defun c:T1()
(prompt "\nChen diem bat ky - Writen by ZAP")
(setq Stt 1)
(while
(progn
(command "osnap" "off")
(prompt "\nChen diem bat ky")
(prompt "\nWriten by ZAP - TEDI WECCo")
(setq pt1 (getpoint "\nVi tri chen diem : "))
(setq z1a (getreal "\nCho cao do (Elev) : " ))
(diem1)
(setq pt3 (list x1 y1 z1a))
(setq Caodo (rtos z1a 2 2))
(ghitext)
(setq Stt (+ Stt 1))
)
)
)

  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#5 hehe123

hehe123

    Chưa sử dụng CAD

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

Đã gửi 28 August 2012 - 09:39 PM

Chắc có lẽ cái này bạn cần tìm kiếm. Có rất nhiều kiểu nội suy độ cao theo cách khác nhau. Bạn dùng thử nhé
<pre class="cadvietlispcode" style="margin-top: 0px; margin-bottom: 0px; padding: 0px; color: rgb(40, 40, 40); line-height: 22px; ">file: c0_c1_cc1_chenmoc_c2_c2n_cnn_ct1_ct2_ct2n_fixct_fixzt_budc_t0_t2n_t2_t1.lsp </pre>

bác hướng dẫn sử dụng giúp được không nhờ, cám ơn nhiều
  • 0

#6 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 995 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 29 August 2012 - 08:41 AM

bác hướng dẫn sử dụng giúp được không nhờ, cám ơn nhiều


Lúc nào rảnh mình viết lại các lisp này. Đây là lisp mình sưu tầm đc của anh Phương bên TEDI WECCO (Lúc đó chưa biết lập trình Lisp). Nó liên quan đến block Att nên bạn không hiểu là đúng.
Để tối về mình xem và viết lại cho dễ hiểu và tốc độ nhanh, chính xác hơn.
  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#7 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 995 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 29 August 2012 - 09:01 PM

Mình cứ đưa lên đây lisp nội suy độ cao thông thường
Với Lệnh chm (chèn measure) tức là chọn 2 điểm để lấy độ cao và tự động nó chèn các text vào giữa 2 điểm đó theo số điểm bạn muốn chèn vào giữa.
Lệnh chd (chèn divide) cũng tương tự như vậy nhưng nó là nhập khoảng cách giữa 2 điểm chèn.
2 lệnh trên dành cho những người lười chèn điểm.
Lệnh cdlt (chèn điểm liên tiếp) tức là chèn theo điểm mình kích chọn sau khi chọn 2 điểm.

(defun c:chm()
(setq i 1)
(command "osnap" "node,center,ins,end,mid")
(or *chieucao* (setq *chieucao* 1))
(setq chieucao (getreal (strcat "\n Chi\U+1EC1u cao text <"
(rtos *chieucao* 2 2)
"> :"
)
)
)
(if (not chieucao) (setq chieucao *chieucao*) (setq *chieucao* chieucao))
(or *xoay* (setq *xoay* 0))
(setq xoay (getreal (strcat "\n G\U+00F3c xoay text <"
(rtos *xoay* 2 2)
"> :"
)
)
)

(if (not xoay) (setq xoay *xoay*) (setq *xoay* xoay))
(command "undo" "be")
(setq pt1 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m th\U+1EE9 nh\U+1EA5t : "))
(setq x1 (car pt1))
(setq y1 (cadr pt1))
(setq z1 (caddr pt1))
(setq pt2 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m th\U+1EE9 hai : "))
(setq x2 (car pt2))
(setq y2 (cadr pt2))
(setq z2 (caddr pt2))
(setq Diem1 (list x1 y1))
(setq Diem2 (list x2 y2))
(setq d (distance diem1 diem2))
(setq n (getint "\nNh\U+1EADp s\U+1ED1 \U+0111i\U+1EC3m c\U+1EA7n ch\U+00E8n: "))
(setq kcl (/ d n))
(setq gocdt (angle diem1 diem2))
(while (< i n)
(command "osnap" "Off")
(setq pt_i (polar diem1 gocdt (* i kcl)))
(setq x3 (car pt_i))
(setq y3 (cadr pt_i))
(setq d1 (distance diem1 pt_i))
(setq d2 (distance diem2 pt_i))
(setq kcdai (+ d1 d2))
(setq dz12 (- z2 z1))
(setq dhz (* dz12 (/ d1 kcdai)))
(setq z3 (+ z1 dhz))
(setq Caodo (rtos z3 2 2))
(setq pt_i (list x3 y3 (atof Caodo)))
(entmake (list (cons 0 "TEXT")(cons 1 caodo) (cons 10 pt_i) (cons 40 chieucao)(cons 50 (DTR xoay))))
(entmake (list (cons 0 "POINT") (cons 10 pt_i)))
(setq i (1+ i))
)
(command "undo" "end")
(princ)
)
(defun c:chd()
(setq i 1)
(command "osnap" "node,center,ins,end,mid")
(or *chieucao* (setq *chieucao* 1))
(setq chieucao (getreal (strcat "\n Chi\U+1EC1u cao text <"
(rtos *chieucao* 2 2)
"> :"
)
)
)
(if (not chieucao) (setq chieucao *chieucao*) (setq *chieucao* chieucao))
(or *xoay* (setq *xoay* 0))
(setq xoay (getreal (strcat "\n G\U+00F3c xoay text <"
(rtos *xoay* 2 2)
"> :"
)
)
)
(if (not xoay) (setq xoay *xoay*) (setq *xoay* xoay))
(command "undo" "be")
(setq pt1 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m th\U+1EE9 nh\U+1EA5t : "))
(setq x1 (car pt1))
(setq y1 (cadr pt1))
(setq z1 (caddr pt1))
(setq pt2 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m th\U+1EE9 hai : "))
(setq x2 (car pt2))
(setq y2 (cadr pt2))
(setq z2 (caddr pt2))
(setq Diem1 (list x1 y1))
(setq Diem2 (list x2 y2))
(setq d (distance diem1 diem2))
(setq kcl (getint "\nNh\U+1EADp kho\U+1EA3ng c\U+00E1ch gi\U+1EEFa 2 \U+0111i\U+1EC3m: "))
(setq n (/ d kcl))
(setq gocdt (angle diem1 diem2))
(while (< i n)
(command "osnap" "Off")
(setq pt_i (polar diem1 gocdt (* i kcl)))
(setq x3 (car pt_i))
(setq y3 (cadr pt_i))
(setq d1 (distance diem1 pt_i))
(setq d2 (distance diem2 pt_i))
(setq kcdai (+ d1 d2))
(setq dz12 (- z2 z1))
(setq dhz (* dz12 (/ d1 kcdai)))
(setq z3 (+ z1 dhz))
(setq Caodo (rtos z3 2 2))
(setq pt_i (list x3 y3 (atof Caodo)))
(entmake (list (cons 0 "TEXT")(cons 1 caodo) (cons 10 pt_i) (cons 40 chieucao)(cons 50 (DTR xoay))))
(entmake (list (cons 0 "POINT") (cons 10 pt_i)))
(setq i (1+ i))
)
(command "undo" "end")
(princ)
)
(defun c:cdlt() ;chen diem lien tiep
(setq i 1)
(command "osnap" "node,center,ins,end,mid")
(or *chieucao* (setq *chieucao* 2))
(setq chieucao (getreal (strcat "\n Chi\U+1EC1u cao text <"
(rtos *chieucao* 2 2)
"> :"
)
)
)
(if (not chieucao) (setq chieucao *chieucao*) (setq *chieucao* chieucao))
(or *xoay* (setq *xoay* 5))
(setq xoay (getreal (strcat "\n G\U+00F3c xoay text <"
(rtos *xoay* 2 2)
"> :"
)
)
)
(if (not xoay) (setq xoay *xoay*) (setq *xoay* xoay))
(command "undo" "be")
(setq pt1 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m th\U+1EE9 nh\U+1EA5t : "))
(setq x1 (car pt1))
(setq y1 (cadr pt1))
(setq z1 (caddr pt1))
(setq pt2 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m th\U+1EE9 hai : "))
(setq x2 (car pt2))
(setq y2 (cadr pt2))
(setq z2 (caddr pt2))
(setq Diem1 (list x1 y1))
(setq Diem2 (list x2 y2))
(setq d (distance diem1 diem2))
(while
(progn
(command "osnap" "Off")
(setq pt_i (getpoint "\n Ch\U+1ECDn \U+0111i\U+1EC3m c\U+1EA7n ch\U+00E8n: "))
(setq x3 (car pt_i))
(setq y3 (cadr pt_i))
(setq d1 (distance diem1 pt_i))
(setq d2 (distance diem2 pt_i))
(setq kcdai (+ d1 d2))
(setq dz12 (- z2 z1))
(setq dhz (* dz12 (/ d1 kcdai)))
(setq z3 (+ z1 dhz))
(setq Caodo (rtos z3 2 2))
(setq pt_i (list x3 y3 (atof Caodo)))
(entmake (list (cons 0 "TEXT")(cons 1 Caodo) (cons 10 pt_i) (cons 40 chieucao)(cons 50 (DTR xoay))))
(entmake (list (cons 0 "POINT") (cons 10 pt_i)))
(setq i (1+ i))
)
)
(command "undo" "end")
(princ)
)
(defun DTR (A) (/ (* A pi) 180.0))

Nếu bạn muốn yêu cầu thao tác như thế nào thì hãy mô tả và kèm theo bản vẽ nhé
  • 2



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#8 hoangkimanh1607

hoangkimanh1607

    biết vẽ line

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

Đã gửi 30 August 2012 - 12:15 PM

Lisp này nếu thêm điểm point có cao độ z của text nữa thì tuyệt vời, nhờ các cao thủ ra tay giúp, thanks
  • 0

#9 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 995 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 30 August 2012 - 03:37 PM

Lisp này nếu thêm điểm point có cao độ z của text nữa thì tuyệt vời, nhờ các cao thủ ra tay giúp, thanks

Đã chỉnh sửa lisp trên theo yêu cầu của bạn. Bạn down lại nhé
Nếu muốn chọn text mà cao độ text lại bằng "0" thì lấy nội dung text làm cao độ. Vậy thì dùng lisp Convert Text 3D để tạo text có cao độ. Mình lười nên dùng cái có sẵn. Ngại viết.

(defun ST:Text-Base (ent)
(setq Ma10 (cdr (assoc 10 (entget ent))))
(setq Ma11 (cdr (assoc 11 (entget ent))))
(setq X11 (car Ma11))
(setq Ma71 (cdr (assoc 71 (entget ent))))
(setq Ma72 (cdr (assoc 72 (entget ent))))
(if (or (and (= Ma71 0) (= Ma72 0) (= X11 0))
(and (= Ma71 0) (= Ma72 3) )
(and (= Ma71 0) (= Ma72 5) )
)
Ma10
Ma11
)
)
(defun C:CVT3D (/ ss Z_value temp koord)
(command "undo" "be")
(command "osnap" "off")
(setq ss (ssget (list (cons 0 "TEXT"))))
(setq s1 ((lambda (sec) (+ (* 86400 (- sec (fix sec))) 60)) (getvar "DATE")))
(progn
(setq ss (vl-remove-if-not '(lambda (x) (= (type x) 'ENAME)) (mapcar 'cadr (ssnamex ss))))
(foreach item ss
(setq temp (entget item))
(setq Tdo (ST:Text-Base item ))
(setq Caodo (cdr (assoc 1 temp))
h (cdr (assoc 40 temp))
Pnt (list (car Tdo)
(cadr Tdo)
(atof caodo)
)
)
(entdel item)
(entmake (list (cons 0 "TEXT") (cons 10 Pnt) (cons 40 h) (cons 1 Caodo)))
)
)
(setq s2 ((lambda (sec) (+ (* 86400 (- sec (fix sec))) 60)) (getvar "DATE")))
(setq stop (getvar "date"))
(command "undo" "end")
(princ "\n")
(alert (strcat "Th\U+1EDDi gian th\U+1EF1c hi\U+1EC7n ch\U+01B0\U+01A1ng tr\U+00ECnh l\U+00E0: " (rtos (- s2 s1) 2 3) " gi\U+00E2y"))
(princ)
)


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#10 hoangkimanh1607

hoangkimanh1607

    biết vẽ line

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

Đã gửi 06 September 2012 - 01:12 PM

Đã chỉnh sửa lisp trên theo yêu cầu của bạn. Bạn down lại nhé
Nếu muốn chọn text mà cao độ text lại bằng "0" thì lấy nội dung text làm cao độ. Vậy thì dùng lisp Convert Text 3D để tạo text có cao độ. Mình lười nên dùng cái có sẵn. Ngại viết.


(defun ST:Text-Base (ent)
(setq Ma10 (cdr (assoc 10 (entget ent))))
(setq Ma11 (cdr (assoc 11 (entget ent))))
(setq X11 (car Ma11))
(setq Ma71 (cdr (assoc 71 (entget ent))))
(setq Ma72 (cdr (assoc 72 (entget ent))))
(if (or (and (= Ma71 0) (= Ma72 0) (= X11 0))
(and (= Ma71 0) (= Ma72 3) )
(and (= Ma71 0) (= Ma72 5) )
)
Ma10
Ma11
)
)
(defun C:CVT3D (/ ss Z_value temp koord)
(command "undo" "be")
(command "osnap" "off")
(setq ss (ssget (list (cons 0 "TEXT"))))
(setq s1 ((lambda (sec) (+ (* 86400 (- sec (fix sec))) 60)) (getvar "DATE")))
(progn
(setq ss (vl-remove-if-not '(lambda (x) (= (type x) 'ENAME)) (mapcar 'cadr (ssnamex ss))))
(foreach item ss
(setq temp (entget item))
(setq Tdo (ST:Text-Base item ))
(setq Caodo (cdr (assoc 1 temp))
h (cdr (assoc 40 temp))
Pnt (list (car Tdo)
(cadr Tdo)
(atof caodo)
)
)
(entdel item)
(entmake (list (cons 0 "TEXT") (cons 10 Pnt) (cons 40 h) (cons 1 Caodo)))
)
)
(setq s2 ((lambda (sec) (+ (* 86400 (- sec (fix sec))) 60)) (getvar "DATE")))
(setq stop (getvar "date"))
(command "undo" "end")
(princ "\n")
(alert (strcat "Th\U+1EDDi gian th\U+1EF1c hi\U+1EC7n ch\U+01B0\U+01A1ng tr\U+00ECnh l\U+00E0: " (rtos (- s2 s1) 2 3) " gi\U+00E2y"))
(princ)
)

nhờ bạn thanhduan2407 dưa thêm đọan mã của lisp cvt3d.lsp vao listp nội suy cao độ chm_chd_cdlt.lsp để lisp hoàn thiện hơn nhé thanks

  • 0

#11 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 995 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 06 September 2012 - 01:45 PM

2 lisp đó độc lập mà. Lisp CVT3D.lsp dùng khi cao độ thể hiện dạng text nhưng elevation của text lại bằng 0. Bạn dùng lisp CVT3D.lsp để text đó nhận nội dung text làm cao độ (elevation). Thêm hay không thêm vẫn thế thôi.
  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#12 hoangkimanh1607

hoangkimanh1607

    biết vẽ line

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

Đã gửi 08 September 2012 - 08:03 AM

Các pác xem bản vẽ, ý mình muốn thêm điểm point co cao độ z, vì lisp chm_chd_cdlt.lsp chỉ nội suy text
http://www.mediafire...ozdat683at25tv4
  • 0

#13 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 995 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 08 September 2012 - 10:23 AM

Các pác xem bản vẽ, ý mình muốn thêm điểm point co cao độ z, vì lisp chm_chd_cdlt.lsp chỉ nội suy text
http://www.mediafire...ozdat683at25tv4

Đã chỉnh sửa lại theo yêu cầu của bạn. Tuy nhiên file bạn gửi thì nội dung text với elevation của text là khác nhau.

(defun c:chm()
(setq i 1)
(command "osnap" "node,center,ins,end,mid")
(or *chieucao* (setq *chieucao* 1))
(setq chieucao (getreal (strcat "\n Chi\U+1EC1u cao text <"
(rtos *chieucao* 2 2)
"> :"
)
)
)
(if (not chieucao) (setq chieucao *chieucao*) (setq *chieucao* chieucao))
(or *xoay* (setq *xoay* 0))
(setq xoay (getreal (strcat "\n G\U+00F3c xoay text <"
(rtos *xoay* 2 2)
"> :"
)
)
)

(if (not xoay) (setq xoay *xoay*) (setq *xoay* xoay))
(command "undo" "be")
(setq pt1 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m th\U+1EE9 nh\U+1EA5t : "))
(setq x1 (car pt1))
(setq y1 (cadr pt1))
(setq z1 (caddr pt1))
(setq pt2 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m th\U+1EE9 hai : "))
(setq x2 (car pt2))
(setq y2 (cadr pt2))
(setq z2 (caddr pt2))
(setq Diem1 (list x1 y1))
(setq Diem2 (list x2 y2))
(setq d (distance diem1 diem2))
(setq n (getint "\nNh\U+1EADp s\U+1ED1 \U+0111i\U+1EC3m c\U+1EA7n ch\U+00E8n: "))
(setq kcl (/ d n))
(setq gocdt (angle diem1 diem2))
(while (< i n)
(command "osnap" "Off")
(setq pt_i (polar diem1 gocdt (* i kcl)))
(setq x3 (car pt_i))
(setq y3 (cadr pt_i))
(setq d1 (distance diem1 pt_i))
(setq d2 (distance diem2 pt_i))
(setq kcdai (+ d1 d2))
(setq dz12 (- z2 z1))
(setq dhz (* dz12 (/ d1 kcdai)))
(setq z3 (+ z1 dhz))
(setq Caodo (rtos z3 2 2))
(setq pt_i (list x3 y3 (atof Caodo)))
(entmake (list (cons 0 "TEXT")(cons 1 caodo) (cons 10 pt_i) (cons 40 chieucao)(cons 50 (DTR xoay))))
(entmake (list (cons 0 "POINT") (cons 10 pt_i)))
(setq i (1+ i))
)
(command "undo" "end")
(princ)
)
(defun c:chd()
(setq i 1)
(command "osnap" "node,center,ins,end,mid")
(or *chieucao* (setq *chieucao* 1))
(setq chieucao (getreal (strcat "\n Chi\U+1EC1u cao text <"
(rtos *chieucao* 2 2)
"> :"
)
)
)
(if (not chieucao) (setq chieucao *chieucao*) (setq *chieucao* chieucao))
(or *xoay* (setq *xoay* 0))
(setq xoay (getreal (strcat "\n G\U+00F3c xoay text <"
(rtos *xoay* 2 2)
"> :"
)
)
)
(if (not xoay) (setq xoay *xoay*) (setq *xoay* xoay))
(command "undo" "be")
(setq pt1 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m th\U+1EE9 nh\U+1EA5t : "))
(setq x1 (car pt1))
(setq y1 (cadr pt1))
(setq z1 (caddr pt1))
(setq pt2 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m th\U+1EE9 hai : "))
(setq x2 (car pt2))
(setq y2 (cadr pt2))
(setq z2 (caddr pt2))
(setq Diem1 (list x1 y1))
(setq Diem2 (list x2 y2))
(setq d (distance diem1 diem2))
(setq kcl (getint "\nNh\U+1EADp kho\U+1EA3ng c\U+00E1ch gi\U+1EEFa 2 \U+0111i\U+1EC3m: "))
(setq n (/ d kcl))
(setq gocdt (angle diem1 diem2))
(while (< i n)
(command "osnap" "Off")
(setq pt_i (polar diem1 gocdt (* i kcl)))
(setq x3 (car pt_i))
(setq y3 (cadr pt_i))
(setq d1 (distance diem1 pt_i))
(setq d2 (distance diem2 pt_i))
(setq kcdai (+ d1 d2))
(setq dz12 (- z2 z1))
(setq dhz (* dz12 (/ d1 kcdai)))
(setq z3 (+ z1 dhz))
(setq Caodo (rtos z3 2 2))
(setq pt_i (list x3 y3 (atof Caodo)))
(entmake (list (cons 0 "TEXT")(cons 1 caodo) (cons 10 pt_i) (cons 40 chieucao)(cons 50 (DTR xoay))))
(entmake (list (cons 0 "POINT") (cons 10 pt_i)))
(setq i (1+ i))
)
(command "undo" "end")
(princ)
)
(defun c:cdlt() ;chen diem lien tiep
(setq i 1)
(command "osnap" "node,center,ins,end,mid")
(or *chieucao* (setq *chieucao* 2))
(setq chieucao (getreal (strcat "\n Chi\U+1EC1u cao text <"
(rtos *chieucao* 2 2)
"> :"
)
)
)
(if (not chieucao) (setq chieucao *chieucao*) (setq *chieucao* chieucao))
(or *xoay* (setq *xoay* 5))
(setq xoay (getreal (strcat "\n G\U+00F3c xoay text <"
(rtos *xoay* 2 2)
"> :"
)
)
)
(if (not xoay) (setq xoay *xoay*) (setq *xoay* xoay))
(command "undo" "be")
(setq pt1 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m th\U+1EE9 nh\U+1EA5t : "))
(setq x1 (car pt1))
(setq y1 (cadr pt1))
(setq z1 (caddr pt1))
(setq pt2 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m th\U+1EE9 hai : "))
(setq x2 (car pt2))
(setq y2 (cadr pt2))
(setq z2 (caddr pt2))
(setq Diem1 (list x1 y1))
(setq Diem2 (list x2 y2))
(setq d (distance diem1 diem2))
(while
(progn
(command "osnap" "Off")
(setq pt_i (getpoint "\n Ch\U+1ECDn \U+0111i\U+1EC3m c\U+1EA7n ch\U+00E8n: "))
(setq x3 (car pt_i))
(setq y3 (cadr pt_i))
(setq d1 (distance diem1 pt_i))
(setq d2 (distance diem2 pt_i))
(setq kcdai (+ d1 d2))
(setq dz12 (- z2 z1))
(setq dhz (* dz12 (/ d1 kcdai)))
(setq z3 (+ z1 dhz))
(setq Caodo (rtos z3 2 2))
(setq pt_i (list x3 y3 (atof Caodo)))
(entmake (list (cons 0 "TEXT")(cons 1 Caodo) (cons 10 pt_i) (cons 40 chieucao)(cons 50 (DTR xoay))))
(entmake (list (cons 0 "POINT") (cons 10 pt_i)))
(setq i (1+ i))
)
)
(command "undo" "end")
(princ)
)
(defun DTR (A) (/ (* A pi) 180.0))

(defun ST:Text-Base (ent)
(setq Ma10 (cdr (assoc 10 (entget ent))))
(setq Ma11 (cdr (assoc 11 (entget ent))))
(setq X11 (car Ma11))
(setq Ma71 (cdr (assoc 71 (entget ent))))
(setq Ma72 (cdr (assoc 72 (entget ent))))
(if (or (and (= Ma71 0) (= Ma72 0) (= X11 0))
(and (= Ma71 0) (= Ma72 3) )
(and (= Ma71 0) (= Ma72 5) )
)
Ma10
Ma11
)
)
(defun C:CVT3D (/ ss Tdo Caodo Pnt temp )
(command "undo" "be")
(command "osnap" "off")
(setq ss (ssget (list (cons 0 "TEXT"))))
(progn
(setq ss (vl-remove-if-not '(lambda (x) (= (type x) 'ENAME)) (mapcar 'cadr (ssnamex ss))))
(foreach item ss
(setq temp (entget item)
Tdo (ST:Text-Base item )
Caodo (cdr (assoc 1 temp))
Pnt (list (car Tdo)(cadr Tdo)(atof caodo))
)
(setq temp (subst (cons 10 Pnt)(assoc 10 temp) temp))
(entmod temp)
(entmake (list (cons 0 "POINT") (cons 10 Pnt) ))
)
)
(command "undo" "end")
(princ)
)


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#14 hoangkimanh1607

hoangkimanh1607

    biết vẽ line

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

Đã gửi 10 September 2012 - 08:08 AM

Đã chỉnh sửa lại theo yêu cầu của bạn. Tuy nhiên file bạn gửi thì nội dung text với elevation của text là khác nhau.


(defun c:chm()
(setq i 1)
(command "osnap" "node,center,ins,end,mid")
(or *chieucao* (setq *chieucao* 1))
(setq chieucao (getreal (strcat "\n Chi\U+1EC1u cao text <"
(rtos *chieucao* 2 2)
"> :"
)
)
)
(if (not chieucao) (setq chieucao *chieucao*) (setq *chieucao* chieucao))
(or *xoay* (setq *xoay* 0))
(setq xoay (getreal (strcat "\n G\U+00F3c xoay text <"
(rtos *xoay* 2 2)
"> :"
)
)
)

(if (not xoay) (setq xoay *xoay*) (setq *xoay* xoay))
(command "undo" "be")
(setq pt1 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m th\U+1EE9 nh\U+1EA5t : "))
(setq x1 (car pt1))
(setq y1 (cadr pt1))
(setq z1 (caddr pt1))
(setq pt2 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m th\U+1EE9 hai : "))
(setq x2 (car pt2))
(setq y2 (cadr pt2))
(setq z2 (caddr pt2))
(setq Diem1 (list x1 y1))
(setq Diem2 (list x2 y2))
(setq d (distance diem1 diem2))
(setq n (getint "\nNh\U+1EADp s\U+1ED1 \U+0111i\U+1EC3m c\U+1EA7n ch\U+00E8n: "))
(setq kcl (/ d n))
(setq gocdt (angle diem1 diem2))
(while (< i n)
(command "osnap" "Off")
(setq pt_i (polar diem1 gocdt (* i kcl)))
(setq x3 (car pt_i))
(setq y3 (cadr pt_i))
(setq d1 (distance diem1 pt_i))
(setq d2 (distance diem2 pt_i))
(setq kcdai (+ d1 d2))
(setq dz12 (- z2 z1))
(setq dhz (* dz12 (/ d1 kcdai)))
(setq z3 (+ z1 dhz))
(setq Caodo (rtos z3 2 2))
(setq pt_i (list x3 y3 (atof Caodo)))
(entmake (list (cons 0 "TEXT")(cons 1 caodo) (cons 10 pt_i) (cons 40 chieucao)(cons 50 (DTR xoay))))
(entmake (list (cons 0 "POINT") (cons 10 pt_i)))
(setq i (1+ i))
)
(command "undo" "end")
(princ)
)
(defun c:chd()
(setq i 1)
(command "osnap" "node,center,ins,end,mid")
(or *chieucao* (setq *chieucao* 1))
(setq chieucao (getreal (strcat "\n Chi\U+1EC1u cao text <"
(rtos *chieucao* 2 2)
"> :"
)
)
)
(if (not chieucao) (setq chieucao *chieucao*) (setq *chieucao* chieucao))
(or *xoay* (setq *xoay* 0))
(setq xoay (getreal (strcat "\n G\U+00F3c xoay text <"
(rtos *xoay* 2 2)
"> :"
)
)
)
(if (not xoay) (setq xoay *xoay*) (setq *xoay* xoay))
(command "undo" "be")
(setq pt1 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m th\U+1EE9 nh\U+1EA5t : "))
(setq x1 (car pt1))
(setq y1 (cadr pt1))
(setq z1 (caddr pt1))
(setq pt2 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m th\U+1EE9 hai : "))
(setq x2 (car pt2))
(setq y2 (cadr pt2))
(setq z2 (caddr pt2))
(setq Diem1 (list x1 y1))
(setq Diem2 (list x2 y2))
(setq d (distance diem1 diem2))
(setq kcl (getint "\nNh\U+1EADp kho\U+1EA3ng c\U+00E1ch gi\U+1EEFa 2 \U+0111i\U+1EC3m: "))
(setq n (/ d kcl))
(setq gocdt (angle diem1 diem2))
(while (< i n)
(command "osnap" "Off")
(setq pt_i (polar diem1 gocdt (* i kcl)))
(setq x3 (car pt_i))
(setq y3 (cadr pt_i))
(setq d1 (distance diem1 pt_i))
(setq d2 (distance diem2 pt_i))
(setq kcdai (+ d1 d2))
(setq dz12 (- z2 z1))
(setq dhz (* dz12 (/ d1 kcdai)))
(setq z3 (+ z1 dhz))
(setq Caodo (rtos z3 2 2))
(setq pt_i (list x3 y3 (atof Caodo)))
(entmake (list (cons 0 "TEXT")(cons 1 caodo) (cons 10 pt_i) (cons 40 chieucao)(cons 50 (DTR xoay))))
(entmake (list (cons 0 "POINT") (cons 10 pt_i)))
(setq i (1+ i))
)
(command "undo" "end")
(princ)
)
(defun c:cdlt() ;chen diem lien tiep
(setq i 1)
(command "osnap" "node,center,ins,end,mid")
(or *chieucao* (setq *chieucao* 2))
(setq chieucao (getreal (strcat "\n Chi\U+1EC1u cao text <"
(rtos *chieucao* 2 2)
"> :"
)
)
)
(if (not chieucao) (setq chieucao *chieucao*) (setq *chieucao* chieucao))
(or *xoay* (setq *xoay* 5))
(setq xoay (getreal (strcat "\n G\U+00F3c xoay text <"
(rtos *xoay* 2 2)
"> :"
)
)
)
(if (not xoay) (setq xoay *xoay*) (setq *xoay* xoay))
(command "undo" "be")
(setq pt1 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m th\U+1EE9 nh\U+1EA5t : "))
(setq x1 (car pt1))
(setq y1 (cadr pt1))
(setq z1 (caddr pt1))
(setq pt2 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m th\U+1EE9 hai : "))
(setq x2 (car pt2))
(setq y2 (cadr pt2))
(setq z2 (caddr pt2))
(setq Diem1 (list x1 y1))
(setq Diem2 (list x2 y2))
(setq d (distance diem1 diem2))
(while
(progn
(command "osnap" "Off")
(setq pt_i (getpoint "\n Ch\U+1ECDn \U+0111i\U+1EC3m c\U+1EA7n ch\U+00E8n: "))
(setq x3 (car pt_i))
(setq y3 (cadr pt_i))
(setq d1 (distance diem1 pt_i))
(setq d2 (distance diem2 pt_i))
(setq kcdai (+ d1 d2))
(setq dz12 (- z2 z1))
(setq dhz (* dz12 (/ d1 kcdai)))
(setq z3 (+ z1 dhz))
(setq Caodo (rtos z3 2 2))
(setq pt_i (list x3 y3 (atof Caodo)))
(entmake (list (cons 0 "TEXT")(cons 1 Caodo) (cons 10 pt_i) (cons 40 chieucao)(cons 50 (DTR xoay))))
(entmake (list (cons 0 "POINT") (cons 10 pt_i)))
(setq i (1+ i))
)
)
(command "undo" "end")
(princ)
)
(defun DTR (A) (/ (* A pi) 180.0))

(defun ST:Text-Base (ent)
(setq Ma10 (cdr (assoc 10 (entget ent))))
(setq Ma11 (cdr (assoc 11 (entget ent))))
(setq X11 (car Ma11))
(setq Ma71 (cdr (assoc 71 (entget ent))))
(setq Ma72 (cdr (assoc 72 (entget ent))))
(if (or (and (= Ma71 0) (= Ma72 0) (= X11 0))
(and (= Ma71 0) (= Ma72 3) )
(and (= Ma71 0) (= Ma72 5) )
)
Ma10
Ma11
)
)
(defun C:CVT3D (/ ss Tdo Caodo Pnt temp )
(command "undo" "be")
(command "osnap" "off")
(setq ss (ssget (list (cons 0 "TEXT"))))
(progn
(setq ss (vl-remove-if-not '(lambda (x) (= (type x) 'ENAME)) (mapcar 'cadr (ssnamex ss))))
(foreach item ss
(setq temp (entget item)
Tdo (ST:Text-Base item )
Caodo (cdr (assoc 1 temp))
Pnt (list (car Tdo)(cadr Tdo)(atof caodo))
)
(setq temp (subst (cons 10 Pnt)(assoc 10 temp) temp))
(entmod temp)
(entmake (list (cons 0 "POINT") (cons 10 Pnt) ))
)
)
(command "undo" "end")
(princ)
)

OK,thanks bác nhiều
  • 0

#15 DanKhaosat

DanKhaosat

    biết lệnh scale

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

Đã gửi 08 June 2014 - 03:25 PM

Mình cần một lisp như sau:

1. chon text độ cao 1

2. Chon text độ cao 2

3. Chon điểm chèn text nọi suy trên cơ sở đường thẳng nối giữa 2 giá trị text chọn nội suy ra text theo khoảng cách từ điểm nội suy đến 2 text trên

xin nhờ các cao nhân chỉ giúp

Cảm ơn nhiều!


  • 0

#16 DanKhaosat

DanKhaosat

    biết lệnh scale

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

Đã gửi 08 June 2014 - 05:17 PM

Nhờ các bạn giúp đỡ với đang rất cần


  • 0

#17 khangnd

khangnd

    Chưa sử dụng CAD

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

Đã gửi 22 September 2014 - 08:36 PM

Sao mình apload lisp (123235_c0_c1_cc1_chenmoc_c2_c2n_cnn_ct1_ct2_ct2n_fixct_fixzt_budc_t0_t2n_t2_t1) mà báo error load failed. Các bạn giúp mình với.


  • 0

#18 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 995 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 22 September 2014 - 09:12 PM

Bạn sử dụng lisp này xem

(vl-load-com)
(defun c:chm( / Olmode  chieucao item1  temp1 Tdo1 x1 y1 z1 diem1 item2  temp2 Tdo2 Caodo2 x2 y2 z2 diem2 x3 y3 z3  d n kcl pt_i kcdai dz12 d1 d2  dhz )
(defun *error* ( msg )
(if Olmode (setvar 'osmode Olmode))
(if (not (member msg '("*BREAK,*CANCEL*,*EXIT*")))
    (princ (strcat "\nError: " msg))
)
(princ)
)
(setq Olmode (getvar "OSMODE"))
(setq i 1)
(_layer2 "TNS" 6)

(or *chieucao* (setq *chieucao* 1))
(setq chieucao (getreal (strcat "\n Chieu cao text <"
			  (rtos *chieucao* 2 2)
			 "> :"
		  )
	 )
)
(if (not chieucao) (setq chieucao *chieucao*) (setq *chieucao* chieucao))
(progn
	    (setq item1 (entsel "\nChon text thu nhat : "))
	    (setq temp1  (entget (car item1)))
	    (setq Tdo1 (TD:Text-Base (car item1 )))
	    (setq  Caodo1 (cdr (assoc 1 temp1))
	              x1 (car Tdo1)
	              y1 (cadr Tdo1)
	    )
	    (setq  z1 (atof Caodo1))
	    (setq diem1 (list x1 y1))
	    

	    (setq item2 (entsel "\nChon text thu hai : "))
	    (setq temp2  (entget (car item2)))
	    (setq Tdo2 (TD:Text-Base (car item2 )))
	    (setq  Caodo2 (cdr (assoc 1 temp2))
	              x2 (car Tdo2)
	              y2 (cadr Tdo2)
	    )
	    (setq z2 (atof Caodo2))
	    (setq diem2 (list x2 y2 ))
	    
	)
(setq d (distance diem1 diem2))
(or *n* (setq *n* 1))
(setq n (getreal (strcat "\Nhap so diem can chen <"
			  (rtos *n* 2 0)
			 "> :"
		  )
	 )
)
(if (not n) (setq n *n*) (setq *n* n))


(if (not sle)
    (setq sle 2)
)
(setq sle0 (getint (strcat "\nS\U+1ED1 l\U+1EBB sau ph\U+1EA7n th\U+1EADp ph\U+00E2n (T\U+1ED1i \U+0111a = 10, t\U+1ED1i thi\U+1EC3u = 0) <" (itoa sle) ">: ")))
(if sle0
   (progn
	(if (< sle0 0)(setq sle0 0))
	(if (> sle0 10)(setq sle0 10))
        (setq sle sle0)
   )
)
(setq kcl (/ d (+ n 1)))
(setq gocdt (angle diem1 diem2))
	(while  (<= i n)
	    (setvar "OSMODE" 0)
	    (setq pt_i (polar diem1 gocdt (* i kcl)))
	    (setq x3 (car pt_i))
	    (setq y3 (cadr pt_i))
	    (setq d1 (distance diem1 pt_i))
	    (setq d2 (distance diem2 pt_i))
	    (setq kcdai (+ d1 d2))
	    (setq dz12 (- z2 z1))
	    (setq dhz (* dz12 (/ d1 kcdai)))
	    (setq z3 (+ z1 dhz))
	    (setq Caodo (rtos z3 2 sle))
	    (setq pt_i (list x3 y3 z3))
	    (MakeText pt_i Caodo chieucao 0 "L" "TNS")
	    (setq i (1+ i))
	)
(setvar "OSMODE" Olmode)
(princ)
)


(defun c:chd( /  Olmode  chieucao item1  temp1 Tdo1 x1 y1 z1 diem1 item2  temp2 Tdo2 Caodo2 x2 y2 z2 diem2 x3 y3 z3  d n kcl pt_i kcdai dz12 d1 d2  dhz)
(defun *error* ( msg )
(if Olmode (setvar 'osmode Olmode))
(if (not (member msg '("*BREAK,*CANCEL*,*EXIT*")))
    (princ (strcat "\nError: " msg))
)
(princ)
)
(setq Olmode (getvar "OSMODE"))
(setq i 1)
(_layer2 "TNS" 6)

(if (not sle)
    (setq sle 2)
)
  
(or *chieucao* (setq *chieucao* 1))
(setq chieucao (getreal (strcat "\n Chieu cao text <"
				  (rtos *chieucao* 2 2)
				 "> :"
			  )
		)
)
  (if (not chieucao) (setq chieucao *chieucao*) (setq *chieucao* chieucao))
	(progn
	    (setq item1 (entsel "\nChon text thu nhat : "))
	    (setq temp1  (entget (car item1)))
	    (setq Tdo1 (TD:Text-Base (car item1 )))
	    (setq  Caodo1 (cdr (assoc 1 temp1))
	              x1 (car Tdo1)
	              y1 (cadr Tdo1)
	    )
	    (setq  z1 (atof Caodo1))
	    (setq pt1 (list x1 y1 ))
	    

	    (setq item2 (entsel "\nChon text thu hai : "))
	    (setq temp2  (entget (car item2)))
	    (setq Tdo2 (TD:Text-Base (car item2 )))
	    (setq  Caodo2 (cdr (assoc 1 temp2))
	              x2 (car Tdo2)
	              y2 (cadr Tdo2)
	    )
	    (setq z2 (atof Caodo2))
	    (setq pt2 (list x2 y2 ))
	    
	)
	(setq Diem1 (list x1 y1))
	(setq Diem2 (list x2 y2))
	(setq d (distance diem1 diem2))
  	(or *kcl* (setq *kcl* 0))
	(setq kcl (getreal (strcat "\nNhap khoang cach giua cac diem: <"
				  (rtos *kcl* 2 2)
				 "> :"
			  )
		 )
	)
	(if (not kcl) (setq kcl *kcl*) (setq *kcl* kcl))

	(setq sle0 (getint (strcat "\nS\U+1ED1 l\U+1EBB sau ph\U+1EA7n th\U+1EADp ph\U+00E2n (T\U+1ED1i \U+0111a = 10, t\U+1ED1i thi\U+1EC3u = 0) <" (itoa sle) ">: ")))
	(if sle0
	   (progn
		(if (< sle0 0)(setq sle0 0))
		(if (> sle0 10)(setq sle0 10))
	        (setq sle sle0)
	   )
	)

  
	(setq n (/ d kcl))
	(setq gocdt (angle diem1 diem2))

	(while  (< i n)
	    (setvar "OSMODE" 0)
	    (setq pt_i (polar diem1 gocdt (* i kcl)))
	    (setq x3 (car pt_i))
	    (setq y3 (cadr pt_i))
	    (setq d1 (distance diem1 pt_i))
	    (setq d2 (distance diem2 pt_i))
	    (setq kcdai (+ d1 d2))
	    (setq dz12 (- z2 z1))
	    (setq dhz (* dz12 (/ d1 kcdai)))
	    (setq z3 (+ z1 dhz))
	    (setq Caodo (rtos z3 2 sle))
	    (setq pt_i (list x3 y3 z3))
	    (MakeText pt_i Caodo chieucao 0 "L" "TNS")
	    (setq i (1+ i))
	)
(setvar "OSMODE" Olmode)
(princ)
)

(defun c:clt(/ chieucao  stt  item1 temp1 Tdo1 X1 Y1 Z1 Caodo1 item2 Tdo2 X2 Y2 Z2 Caodo2 pt1 pt2 pt3 X3 Y3 Z3 d1 d2 d dh dhz Caodo3) ;chen lien tiep tu 2 diem
	(defun *error* ( msg )
		(if Olmode (setvar 'osmode Olmode))
		(if (not (member msg '("*BREAK,*CANCEL*,*EXIT*")))
		    (princ (strcat "\nError: " msg))
		)
		(princ)
	)
  	
  	
	(or *chieucao* (setq *chieucao* 1))
	(setq chieucao (getreal (strcat "\n Chieu cao text <"
			  (rtos *chieucao* 2 2)
			 "> :"
		  )
	 )
	)
	(if (not chieucao) (setq chieucao *chieucao*) (setq *chieucao* chieucao))
	(setq stt 1)
	(_layer2 "TNS" 6)
	(setq Olmode (getvar "OSMODE"))
  	    
  (progn
            (setq item1 (entsel "\nChon text thu nhat : "))
  	    (setq temp1  (entget (car item1)))
	    (setq Tdo1 (TD:Text-Base (car item1 )))
	    (setq  Caodo1 (cdr (assoc 1 temp1))
	              x1 (car Tdo1)
	              y1 (cadr Tdo1)
            )
	    (setq pt1 (list x1 y1))
            (setq  z1 (atof Caodo1))
  
            (setq item2 (entsel "\nChon text thu hai : "))
  	    (setq temp2  (entget (car item2)))
	    (setq Tdo2 (TD:Text-Base (car item2 )))
	    (setq  Caodo2 (cdr (assoc 1 temp2))
	              x2 (car Tdo2)
	              y2 (cadr Tdo2)
            )
            (setq pt2 (list x2 y2))
            (setq z2 (atof Caodo2))
    )
  (if (not sle)
    (setq sle 2)
)
(setq sle0 (getint (strcat "\nS\U+1ED1 l\U+1EBB sau ph\U+1EA7n th\U+1EADp ph\U+00E2n (T\U+1ED1i \U+0111a = 10, t\U+1ED1i thi\U+1EC3u = 0) <" (itoa sle) ">: ")))
(if sle0
   (progn
	(if (< sle0 0)(setq sle0 0))
	(if (> sle0 10)(setq sle0 10))
        (setq sle sle0)
   )
)
       
  (while
         (progn
         (setvar "OSMODE" 0 );;512
            (setq pt3 (getpoint "\nVi tri chen diem : "))
            (setq x3 (car pt3))
            (setq y3 (cadr pt3))
            (setq d1 (distance pt1 pt3))
            (setq d2 (distance pt2 pt3))
            (setq d (+ d1 d2))
            (setq dh (- z2 z1))
            (setq dhz (* dh (/ d1 d)))
            (setq z3 (+ z1 dhz))
            (setq Caodo3 (rtos z3 2 sle))
            (setq pt3 (list x3 y3 z3))
	    (MakeText pt3 Caodo3 chieucao 0 "L" "TNS")
	   (setq stt (+ stt 1))
      )
   )
   (setvar "OSMODE" Olmode )
   (princ)
)

(defun LM:GetXWithDefault ( _function _prompt _symbol _default / _toString )
	(setq _toString
		(lambda ( x )
			(cond
				( (eq getangle _function) (angtos x) )
				( (eq 'REAL (type x)) (rtos x) )
				( (eq 'INT (type x)) (itoa x) )
				( x )
			)
		)
	)

	(set _symbol
	(
	(lambda ( input ) (if (or (not input) (eq "" input)) (eval _symbol) input))
	(_function (strcat _prompt "<" (_toString (set _symbol (cond ( (eval _symbol) ) ( _default )))) "> : "))
	)
	)
)
(defun TD:Text-Base (ent)
  (setq Ma10  (cdr (assoc 10 (entget ent))))
  (setq Ma11  (cdr (assoc 11 (entget ent))))
  (setq X11 (car Ma11))
  (setq Ma71  (cdr (assoc 71 (entget ent))))
  (setq Ma72  (cdr (assoc 72 (entget ent))))
  (if (or (and (= Ma71 0) (= Ma72 0) (= X11 0))
	  (and (= Ma71 0) (= Ma72 3) )
	  (and (= Ma71 0) (= Ma72 5) )
      )
    Ma10
    Ma11
   )
)

(defun _layer2 ( name colour )
    (if (null (tblsearch "LAYER" name))
        (entmake
            (list
               '(0 . "LAYER")
               '(100 . "AcDbSymbolTableRecord")
               '(100 . "AcDbLayerTableRecord")
               '(70 . 0)
                (cons 2 name)
                (cons 62 colour)
            )
        )
    )
)


(defun MakeText (point string Height Ang justify  Layer  / Lst); Ang: Radial
	(setq Lst (list '(0 . "TEXT")
									(cons 10 point)
									(cons 40 Height)
									(cons 1 string)
								        (cons 50 Ang)
									(cons 8 Layer)
			)
				justify (strcase justify))
	(cond ((= justify "C") (setq Lst (append Lst (list (cons 72 1) (cons 11 point)))))
	      			((= justify "L") (setq Lst (append Lst (list (cons 72 0)(cons 73 0) (cons 10 point)))))
				((= justify "R") (setq Lst (append Lst (list (cons 72 2) (cons 11 point)))))
				((= justify "M") (setq Lst (append Lst (list (cons 72 4) (cons 11 point)))))
				((= justify "TL") (setq Lst (append Lst (list (cons 72 0) (cons 11 point) (cons 73 3)))))
				((= justify "TC") (setq Lst (append Lst (list (cons 72 1) (cons 11 point) (cons 73 3)))))
				((= justify "TR") (setq Lst (append Lst (list (cons 72 2) (cons 11 point) (cons 73 3)))))	
				((= justify "ML") (setq Lst (append Lst (list (cons 72 0) (cons 11 point) (cons 73 2)))))
				((= justify "MC") (setq Lst (append Lst (list (cons 72 1) (cons 11 point) (cons 73 2)))))
				((= justify "MR") (setq Lst (append Lst (list (cons 72 2) (cons 11 point) (cons 73 2)))))
				((= justify "BL") (setq Lst (append Lst (list (cons 72 0) (cons 11 point) (cons 73 1)))))
				((= justify "BC") (setq Lst (append Lst (list (cons 72 1) (cons 11 point) (cons 73 1)))))
				((= justify "BR") (setq Lst (append Lst (list (cons 72 2) (cons 11 point) (cons 73 1))))))
	(entmakex Lst)
  )

  • -1



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#19 khangnd

khangnd

    Chưa sử dụng CAD

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

Đã gửi 22 September 2014 - 10:17 PM

Mình đang thử áp dụng lisp này (123235_c0_c1_cc1_chenmoc_c2_c2n_cnn_ct1_ct2_ct2n_fixct_fixzt_budc_t0_t2n_t2_t1), nhưng khi chạy thì báo "Vi tri chen diem : nea to insert Enter block name or [?]: D_chitiet
"D_chitiet.dwg": Can't find file in search path:
"

 

Vậy giờ mình có phải tìm file này để copy vào thư mục cad, xin chỉ giúp.


  • 0

#20 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 23 September 2014 - 03:37 PM

Mình đang thử áp dụng lisp này (123235_c0_c1_cc1_chenmoc_c2_c2n_cnn_ct1_ct2_ct2n_fixct_fixzt_budc_t0_t2n_t2_t1), nhưng khi chạy thì báo "Vi tri chen diem : nea to insert Enter block name or [?]: D_chitiet
"D_chitiet.dwg": Can't find file in search path:
"

 

Vậy giờ mình có phải tìm file này để copy vào thư mục cad, xin chỉ giúp.

Hề hề hề,

Đúng vậy và sau đó chạy tiếp xem nó báo lỗi gì????


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