Đến nội dung


Hình ảnh
- - - - -

Xin lisp nội suy cao độ từ 2 điểm (3 điểm nằm trên 1 đoạn thẳng)


  • Please log in to reply
13 replies to this topic

#1 qh2qa06

qh2qa06

    biết vẽ pline

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

Đã gửi 28 July 2014 - 04:30 PM

Bình thường mình nội suy cao độ này bằng hàm Trend trong Excel nhưng mất thời gian quá. Nhờ các bạn hỗ trợ bằng lisp. Mình chỉ cần bấm vào các số, sau đó bấm vào text ở vị trí cần nội suy là có kết quả.

Mình gửi kèm File đính kèm sau:

Cảm ơn các bạn!http://www.cadviet.c...giua_2_diem.dwg


  • 0

#2 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 28 July 2014 - 06:33 PM

Bạn dùng Lisp này nhé!

(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 
		(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 "Them_lt" 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))
    )
            
  (while
         (progn
         (setvar "OSMODE" 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 3))
            (setq pt3 (list x3 y3 z3))
	    (MakeText pt3 Caodo3 chieucao 0 "C" "Them_lt")
	   (setq stt (+ stt 1))
      )
   )
   (setvar "OSMODE" Olmode )
   (princ)
)

;;;Lấy tọa độ chuẩn của Text
(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
   )
)
;;;;Tạo Layer 
(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)
            )
        )
    )
)
;;;;Make by Thaistreetz
(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 "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)
  )

 

(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 
(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 "Them_lt" 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))
    )
            
  (while
         (progn
         (setvar "OSMODE" 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 3))
            (setq pt3 (list x3 y3 z3))
   (MakeText pt3 Caodo3 chieucao 0 "C" "Them_lt")
  (setq stt (+ stt 1))
      )
   )
   (setvar "OSMODE" Olmode )
   (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







#3 qh2qa06

qh2qa06

    biết vẽ pline

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

Đã gửi 29 July 2014 - 08:38 AM

Bạn dùng Lisp này nhé!

(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 
		(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 "Them_lt" 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))
    )
            
  (while
         (progn
         (setvar "OSMODE" 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 3))
            (setq pt3 (list x3 y3 z3))
	    (MakeText pt3 Caodo3 chieucao 0 "C" "Them_lt")
	   (setq stt (+ stt 1))
      )
   )
   (setvar "OSMODE" Olmode )
   (princ)
)

;;;Lấy tọa độ chuẩn của Text
(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
   )
)
;;;;Tạo Layer 
(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)
            )
        )
    )
)
;;;;Make by Thaistreetz
(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 "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)
  )

 

(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 
(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 "Them_lt" 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))
    )
            
  (while
         (progn
         (setvar "OSMODE" 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 3))
            (setq pt3 (list x3 y3 z3))
   (MakeText pt3 Caodo3 chieucao 0 "C" "Them_lt")
  (setq stt (+ stt 1))
      )
   )
   (setvar "OSMODE" Olmode )
   (princ)
)

Cảm ơn bạn đã giúp nhưng mấy lisp bạn đưa mình đều không dùng được. Dùng lisp đầu tiên báo lỗi như sau:

Chieu cao text <1.00> : ; error: no function definition: _LAYER2

 

Mình cần một lisp hỗ trợ tính như file sau:

http://www.cadviet.c...can_noi_suy.doc

File CAD mình đã up ở đầu topic!

Nhờ các bạn giúp đỡ! Cảm ơn nhiều!


  • 0

#4 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 29 July 2014 - 08:52 AM

Cảm ơn bạn đã giúp nhưng mấy lisp bạn đưa mình đều không dùng được. Dùng lisp đầu tiên báo lỗi như sau:

Chieu cao text <1.00> : ; error: no function definition: _LAYER2

 

Mình cần một lisp hỗ trợ tính như file sau:

http://www.cadviet.c...can_noi_suy.doc

File CAD mình đã up ở đầu topic!

Nhờ các bạn giúp đỡ! Cảm ơn nhiều!

Bạn Copy tất cả các LISP thành 1. LISP đầu tiên là lisp chính, các cái sau là hàm con.


  • 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







#5 qh2qa06

qh2qa06

    biết vẽ pline

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

Đã gửi 29 July 2014 - 09:23 AM

Bạn Copy tất cả các LISP thành 1. LISP đầu tiên là lisp chính, các cái sau là hàm con.

Copy tất cả mấy cái thành 1 thì dùng được rồi. Cảm ơn bạn!

Bạn sửa giúp mình là cao độ tính ra viết vào bản vẽ canh lề trái và khi dùng lisp clt này thì không ảnh hưởng đến chế độ truy bắt điểm (Osnap) đang bật của mình được không?

 

Mình muốn xin thêm một lisp nữa, nhập giá trị cao độ y thì tính ra vị trí x của cao độ như trong file word, bạn giúp mình được không?

Cảm ơn bạn!


  • 0

#6 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 29 July 2014 - 09:31 AM

Copy tất cả mấy cái thành 1 thì dùng được rồi. Cảm ơn bạn!

Bạn sửa giúp mình là cao độ tính ra viết vào bản vẽ canh lề trái được không?

 

Mình muốn xin thêm một lisp nữa, nhập giá trị cao độ y thì tính ra vị trí cao độ như trong file word, bạn giúp mình được không?

Cảm ơn bạn!

1. Đỏ: Bạn tìm dòng này trong Lisp đầu tiên, thay chữ "C" thành chữ "L"

(MakeText pt3 Caodo3 chieucao 0 "C" "Them_lt")

Thành 

(MakeText pt3 Caodo3 chieucao 0 "L" "Them_lt")

2. Màu xanh mình ko hiểu ý bạ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 hung_xu20032000

hung_xu20032000

    biết vẽ ellipse

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

Đã gửi 29 July 2014 - 10:18 AM

Bài của bạn rất khó làm. Theo ý của mình. Đường thẳng của bạn phải là đường 3D polyline chứ không phải là đường line (3D polyline mới xuất ra được tọa độ điểm đầu điểm cuối được). Sau đó mới tìm được giá trị cần tìm. 

Gửi lại bạn file mình đã làm. Liên hệ với mình để mình gửi lisp cho bạn. hungmining@gmail.com


  • 0

#8 qh2qa06

qh2qa06

    biết vẽ pline

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

Đã gửi 30 July 2014 - 10:35 AM

1. Đỏ: Bạn tìm dòng này trong Lisp đầu tiên, thay chữ "C" thành chữ "L"

(MakeText pt3 Caodo3 chieucao 0 "C" "Them_lt")

Thành 

(MakeText pt3 Caodo3 chieucao 0 "L" "Them_lt")

2. Màu xanh mình ko hiểu ý bạn

Mình đã sửa được thành căn lề trái.

Bạn hướng dẫn cho mình để bỏ chế độ truy bắt điểm của Lisp này, nó cứ tắt hết cả chế độ truy bắt hiện tại và chuyển sang truy bắt Nearest. Mỗi lần dùng lệnh, mình phải bật lại truy bắt điểm vì mình thường dùng truy bắt Endp, Intersection, Insertior.

 

Dòng 2 là mình xin một lisp nữa, tính ra vị trí điểm khi biết cao độ, nhưng Lisp này ít dùng hơn, mình lại dùng Excel cũng được.


  • 0

#9 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5448 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 30 July 2014 - 11:14 AM

Mình đã sửa được thành căn lề trái.

Bạn hướng dẫn cho mình để bỏ chế độ truy bắt điểm của Lisp này, nó cứ tắt hết cả chế độ truy bắt hiện tại và chuyển sang truy bắt Nearest. Mỗi lần dùng lệnh, mình phải bật lại truy bắt điểm vì mình thường dùng truy bắt Endp, Intersection, Insertior.

 

Dòng 2 là mình xin một lisp nữa, tính ra vị trí điểm khi biết cao độ, nhưng Lisp này ít dùng hơn, mình lại dùng Excel cũng được.

Bạn tìm 3 dòng có chữ "OSMODE", delete 3 dòng đó đi.


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#10 qh2qa06

qh2qa06

    biết vẽ pline

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

Đã gửi 30 July 2014 - 02:19 PM

Bạn tìm 3 dòng có chữ "OSMODE", delete 3 dòng đó đi.

Cảm ơn bạn! Mình đã có lisp như ý!

Lần sau có gì sẽ xin chỉ bảo tiếp!


  • 0

#11 qh2qa06

qh2qa06

    biết vẽ pline

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

Đã gửi 27 August 2014 - 02:36 PM

1. Đỏ: Bạn tìm dòng này trong Lisp đầu tiên, thay chữ "C" thành chữ "L"

(MakeText pt3 Caodo3 chieucao 0 "C" "Them_lt")

Thành 

(MakeText pt3 Caodo3 chieucao 0 "L" "Them_lt")

2. Màu xanh mình ko hiểu ý bạn

Bạn ơi mình muốn sửa cao độ nội suy ra thì text đó có cao độ Z=0. Hiện cao độ nội suy ra có cao độ bằng đúng cao độ mà lisp tính được, ảnh hưởng đến tính khoảng cách từ điểm này đến các điểm khác vì chênh cao độ.


  • 0

#12 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 27 August 2014 - 06:32 PM

hihi rãnh rãnh nhóc nghịch chơi, ko pit có làm hư lsp ko mình test so sánh chưa sữa với sữa cũng đúng cao độ text in ra và thỏa yêu cầu cho properties text có z=0 của bạn, còn số hiển thị trên text vẫn đúng cao độ cần tìm ^^

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.c...n-1-doan-thang/
;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.c...n-1-doan-thang/
;;;L?y t?a d? chu?n c?a Text
(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
   )
)
;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.c...n-1-doan-thang/
;;;;T?o Layer 
(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)
            )
        )
    )
)
;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.c...n-1-doan-thang/
;;;;Make by Thaistreetz
(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 "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)
  )



(defun c:clt(/ chieucao  stt  item1 temp1 Tdo1 X1 Y1 Z1 Caodo1 item2 Tdo2 X2 Y2 Z2 Caodo2 pt1 pt2 pt3 X3 Y3 Z3 z4 d1 d2 d dh dhz Caodo3) ;chen lien tiep tu 2 diem 
		(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 "Them_lt" 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))
    )
            
  (while
         (progn
         (setvar "OSMODE" 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 z4 0)
            (setq Caodo3 (rtos z3 2 3))
            (setq pt3 (list x3 y3 z4))
	    (MakeText pt3 Caodo3 chieucao 0 "C" "Them_lt")
	   (setq stt (+ stt 1))
      )
   )
   (setvar "OSMODE" Olmode )
   (princ)
)

- ah còn vụ canh lề với osnap bạn tự sữa hen, nhoc tải lsp góc nên làm biếng :)


  • 1
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#13 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 27 August 2014 - 08:56 PM

hihi rãnh rãnh nhóc nghịch chơi, ko pit có làm hư lsp ko mình test so sánh chưa sữa với sữa cũng đúng cao độ text in ra và thỏa yêu cầu cho properties text có z=0 của bạn, còn số hiển thị trên text vẫn đúng cao độ cần tìm ^^

Cái này là mình cố tình cho Z = 0. Muốn nó đúng với nội dung thì đơn giản mà. :D


  • 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 qh2qa06

qh2qa06

    biết vẽ pline

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

Đã gửi 28 August 2014 - 09:40 AM

Cảm ơn bạn! Lisp đã chỉnh sửa được theo ý mình rồi.

hihi rãnh rãnh nhóc nghịch chơi, ko pit có làm hư lsp ko mình test so sánh chưa sữa với sữa cũng đúng cao độ text in ra và thỏa yêu cầu cho properties text có z=0 của bạn, còn số hiển thị trên text vẫn đúng cao độ cần tìm ^^


  • 0