Jump to content
InfoFile
Tác giả: mrphuocvie
Bài viết gốc: 326818
Tên lệnh: beam
VẼ DẦM (BV xây dựng)

Chào mọi người!

Tình hình là em có vấn đề về autolisp nhờ mọi người giúp đỡ!Trong lúc tìm hiểu cách viết lisp thì có thằng bạn nó đang làm đồ án, muốn viết cho nó vẽ đỡ vất vả mà chưa đủ level, mong mọi người viết tiếp giúp em!

(defun C:BEAM()	  
; Chon va set cac diem thuoc dam
	(setq p1 (getpoint "\nChon diem dau tren ben trai dam: ")
		x1 (car p1)
		y1 (cadr...
>>

Chào mọi người!

Tình hình là em có vấn đề về autolisp nhờ mọi người giúp đỡ!Trong lúc tìm hiểu cách viết lisp thì có thằng bạn nó đang làm đồ án, muốn viết cho nó vẽ đỡ vất vả mà chưa đủ level, mong mọi người viết tiếp giúp em!

(defun C:BEAM()	  
; Chon va set cac diem thuoc dam
	(setq p1 (getpoint "\nChon diem dau tren ben trai dam: ")
		x1 (car p1)
		y1 (cadr p1))
	(setq p4 (getpoint p1 "\nChon diem dau tren ben phai dam: ")
		x4 (car p4))
	(setq p4 (list x4 y1))
	(setq x0T (+ x1 (* (- x4 x1) 0.5)))
	(setq p0T (list x0T y1))	
	(setq p0 (getpoint p0T "\nChon diem dat dim tren: "))  
	(setq L4 (* (- x4 x1) 0.25))
	(if (> L4 (float(* (fix (/ L4 100)) 100))) (setq L4 (* (+ (fix (/ L4 100)) 1) 100)))
	(setq x2 (+ x1 L4))
	(setq p2 (list x2 y1))
	(setq x3 (- x4 L4))
	(setq p3 (list x3 y1))
	(setq p5 (getpoint "\nChon diem dau duoi ben trai dam: ")
		x5 (car p5)
		y5 (cadr p5))
	(setq p8 (getpoint p5 "\nChon diem dau duoi ben phai dam: ")
		x8 (car p8))
	(setq p8 (list x8 y5))
	(setq x0D (+ x5 (* (- x8 x5) 0.5)))
	(setq y0D y5)
	(setq p0D (list x0D y0D))	
	(setq p0DD (getpoint p0D "\nChon diem dat dim tren: "))  
	(setq L6 (/ (- x8 x5) 6))
	(setq L6 (* (fix (/ L6 100)) 100))
	(setq x6 (+ x5 L6))
	(setq p6 (list x6 y5))
	(setq x7 (- x8 L6))
	(setq p7 (list x7 y5))
; Nhap chieu day lop be tong bao ve	
	(if (not abv0) (setq abv0 40))
	(setq abv (getreal (strcat "\nChieu day BTBV <" (rtos abv0) ">:")))
	(if abv (setq abv abv0))	
	(setq y9 (- y1 abv))
	(setq p9 (list x1 y9))	
	(setq p10 (list x2 y9))
	(setq p11 (list x3 y9))
	(setq p12 (list x4 y9))
	(setq y13 (+ y5 abv))
	(setq p13 (list x5 y13))
	(setq p14 (list x6 y13))
	(setq p15 (list x7 y13))
	(setq p16 (list x8 y13))
	(setq p100 (list (- x2 60) (- y9 30)))
	(setq p110 (list (+ x3 60) (- y9 30)))
	(setq p140 (list (+ x6 60) (+ y13 30)))
	(setq p150 (list (- x7 60) (+ y13 30)))
; Ve cot doc	
(if (= (cdr(assoc 2 (tblsearch "layer" "Rebar"))) nil)(COMMAND "LAYER" "M" "Rebar" "C" "1" "" ""))
	(setvar "clayer" "Rebar")
	(command "line" p9 p12 "")
	(command "line" p10 p100 "")
	(command "line" p11 p110 "")
	(command "line" p13 p16 "")
	(command "line" p140 p14 "")
	(command "line" p150 p15 "")
; Ve cot dai	
	(if (= (cdr(assoc 2 (tblsearch "layer" "Stirrups"))) nil)(COMMAND "LAYER" "M" "Stirrups" "C" "4" "" ""))
	(setvar "clayer" "Stirrups")
	;Dau dam ben trai
	(setq x-ag (+ x1 50))
	(repeat (fix (/ L4 100))
		(setq pG1 (list x-ag y9))
		(setq pG2 (list x-ag y13))
		(setq x-ag (+ 100 x-ag))
		(command "LINE" pG1 pG "")
	)
	;Doan giua dam	
	(setq x-ag x2)
	(repeat (fix (/ L4 200))
		(setq pG1 (list x-ag y9))
		(setq pG2 (list x-ag y13))
		(setq x-ag (+ 200 x-ag))
		(command "LINE" pG1 pG "")
	)
	;Dau dam ben phai
	(setq x-ag (- x4 50))
	(repeat (fix (/ L4 100))
		(setq pG1 (list x-ag y9))
		(setq pG2 (list x-ag y13))
		(setq x-ag (- 100 x-ag))
		(command "LINE" pG1 pG "")
	)
; Chi cac thong tin ve thep
	;Tao layer Text2.5 dung cho ghi chu
	(if (= (cdr(assoc 2 (tblsearch "layer" "Text2.5"))) nil)(COMMAND "LAYER" "M" "Text2.5" "C" "2" "" ""))
	;Chua biet viet tiep, nho cac cao thu tiep suc!!!
;Dim cac thong so dam
	(if (= (cdr(assoc 2 (tblsearch "layer" "Dim"))) nil)(COMMAND "LAYER" "M" "Dim" "C" "7" "" ""))
	(setvar "clayer" "Dim")
	(command "dimlinear" p5 p6 p0DD)
	(command "dimlinear" p6 p7 p0DD)
	(command "dimlinear" p7 p8 p0DD)
	(command "dimlinear" p1 p2 p0)
	(setq dim_obj (entlast))
	(setq str "8a100")
	(if (= str "") (setq str "8a100"))
	(command ".Dim1" "New" (strcat "<>\\X%%C" str) dim_obj "")
	(command "dimlinear" p2 p3 p0)
	(setq dim_obj (entlast))
	(setq str "8a200")
	(if (= str "") (setq str "8a200"))
	(command ".Dim1" "New" (strcat "<>\\X%%C" str) dim_obj "")
	(command "dimlinear" p3 p4 p0)
	(setq dim_obj (entlast))
	(setq str "8a100")
	(if (= str "") (setq str "8a100"))
	(command ".Dim1" "New" (strcat "<>\\X%%C" str) dim_obj "")
)
Trong lúc viết thì em nhận ra một số lỗi mà em chưa hiểu tại sao, mong các cao thủ hỗ trợ:
1. Phần vẽ cốt dọc: tại sao em set tọa độ điểm P9(x1-50, y1-abv) và P12(x1-50, y5+abv) mà tại sao khi vẽ line từ P9 đến P12, nó cứ vẽ từ P1 đến P4 và tương tự cho các điểm còn lại.
2. Phần vẽ cốt đai: em muốn sử dụng lệnh repeat để vẽ trong từng đoạn xong dường như nó không hiểu!
3. Và cuối dùng em muốn ghi chú như hình vẽ (mang tính minh họa).

132006_00_1.png132006_141216.png

Cho em gửi kèm file .dwg: http://www.cadviet.com/upfiles/4/132006_141216.dwg

Cảm ơn!

2. Phần vẽ cốt đai: em muốn sử dụng lệnh repeat để vẽ trong từng đoạn xong dường như nó không hiểu!
3. Và cuối dùng em muốn ghi chú như hình vẽ.

<<

Filename: 326818_beam.lsp
Tác giả: gia_bach
Bài viết gốc: 65083
Tên lệnh: test
Hỏi về Lisp (thuật toán, ý tưởng, coding,...)


Chào VoHoan
hàm tạo Pline hở từ danh sách điểm :
(defun makePLINE(lst-pt)
(entmakex
(apply
(function append)
(cons
(list
'(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
'(100 . "AcDbPolyline")
'(62 . 3) ; color
(cons 90 (length lst-pt))
'(70 . 0)
)
(mapcar
(function list)
(mapcar (function...
>>

Chào VoHoan
hàm tạo Pline hở từ danh sách điểm :
(defun makePLINE(lst-pt)
(entmakex
(apply
(function append)
(cons
(list
'(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
'(100 . "AcDbPolyline")
'(62 . 3) ; color
(cons 90 (length lst-pt))
'(70 . 0)
)
(mapcar
(function list)
(mapcar (function (lambda (a) (cons 10 a))) lst-pt)
) ;_ mapcar
) ;_ cons
) ;_ apply
)
)

Minh họa việc "copy" 1 PLINE (chỉ lấy danh sách điểm, bỏ qua chiều rộng và cung tròn nếu có)

<<

Filename: 65083_test.lsp
Tác giả: thiep
Bài viết gốc: 73301
Tên lệnh: ssi
Hỏi về Lisp (thuật toán, ý tưởng, coding,...)

Chào Thaistreetz và Nataca,
Hàm SSGET với sel-method là "I" sẽ chọn các đối tượng do người dùng chọn trước khi phát lệnh. Đây là 1 mã ví dụ:

Hãy chú ý hàm ACET-SS-DRAG-MOVE, rất có ích cho các bạn đó.
Thaistreetz ứng dụng hàm này vào lisp GHI TOA DO CAC DIEM VA THONG KE THANH BANG xem!

Filename: 73301_ssi.lsp
Tác giả: gia_bach
Bài viết gốc: 76369
Tên lệnh: test
Hỏi về Lisp (thuật toán, ý tưởng, coding,...)

Chào thiep
Sorry, chuyển qua bên này nha.
Tạo cung ellipse bằng cách gián tiếp : truớc tiên tạo 1 ellipse kín, sau đó cắt với các thông số góc đã cho.
Bạn nào biết cách tạo cung ellipse trực tiếp vui lòng bổ sung.

Filename: 76369_test.lsp
Tác giả: gia_bach
Bài viết gốc: 326930
Tên lệnh: doitxt
xin giúp về đổi chỗ 2 text cho nhau

chao mọi người trên diễn đàn.Hiện e có 1 trục trặc nhỏ như sau, đó là việc sắp xếp lại thứ tự trên dưới của text . Ví dụ e có 2 text 1 text nằm trên 1 text nằm dưới cùng layer và h e cần đổi chỗ 2 text này cho nhau, text trên xuống dưới và text dưới lên trên :) mọi người giúp e với ạ, vì có rất nhiều text...

>>

chao mọi người trên diễn đàn.Hiện e có 1 trục trặc nhỏ như sau, đó là việc sắp xếp lại thứ tự trên dưới của text . Ví dụ e có 2 text 1 text nằm trên 1 text nằm dưới cùng layer và h e cần đổi chỗ 2 text này cho nhau, text trên xuống dưới và text dưới lên trên :) mọi người giúp e với ạ, vì có rất nhiều text cần phải đổi chỗ cho nhau. Thanks all  

file vi du : http://www.cadviet.com/upfiles/4/48377_new_block.dwg

Lisp hoán đổi giá trị của hai Text cùng layer :

(defun C:doiTxt(/ obj1 obj2 ss tmp)
  (princ "Chon 2 Text cung layer :")
  (if (and
	(setq ss (ssget (list (cons 0 "TEXT")) ))
	(= 2 (sslength ss))
	(setq obj1 (vlax-ename->vla-object (ssname ss 0)))
	(setq obj2 (vlax-ename->vla-object (ssname ss 1)))
	(eq (vla-get-Layer obj1) (vla-get-Layer obj2)	) )
    (progn      
      (setq tmp (vla-get-TextString obj1))
      (vla-put-TextString obj1 (vla-get-TextString obj2))
      (vla-put-TextString obj2 tmp)))
  (princ))

<<

Filename: 326930_doitxt.lsp
Tác giả: Tot77
Bài viết gốc: 327095
Tên lệnh: dtxt
xin giúp về đổi chỗ 2 text cho nhau

Bổ sung lsp của bác gia_bach 1 chút để có thể chọn nhiều text 1 lúc, với đk là 2 txt nằm trong 1 polyline kín.

(defun c:dtxt() 
(defun doiTxt(ss / obj1 obj2 tmp) 
 (if (and  (= 2 (sslength ss))
(setq obj1 (vlax-ename->vla-object (ssname ss 0)))
(setq obj2 (vlax-ename->vla-object (ssname ss 1)))
(eq (vla-get-Layer obj1) (vla-get-Layer obj2)))
   (progn      
     (setq tmp (vla-get-TextString obj1))
 ...
>>

Bổ sung lsp của bác gia_bach 1 chút để có thể chọn nhiều text 1 lúc, với đk là 2 txt nằm trong 1 polyline kín.

(defun c:dtxt() 
(defun doiTxt(ss / obj1 obj2 tmp) 
 (if (and  (= 2 (sslength ss))
(setq obj1 (vlax-ename->vla-object (ssname ss 0)))
(setq obj2 (vlax-ename->vla-object (ssname ss 1)))
(eq (vla-get-Layer obj1) (vla-get-Layer obj2)))
   (progn      
     (setq tmp (vla-get-TextString obj1))
     (vla-put-TextString obj1 (vla-get-TextString obj2))
     (vla-put-TextString obj2 tmp)))
)
(princ "Chon cac khung bao Text :")
(foreach pl (vl-remove-if-not '(lambda (x) (= :vlax-true (vla-get-Closed (vlax-ename->vla-object x))))
(vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget (list (cons 0 "LWPOLYLINE")))))))
(doiTxt (ssget "CP" (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= 10 (car x))) (entget pl)))
'((0 . "TEXT") )))
)
)

<<

Filename: 327095_dtxt.lsp
Tác giả: nhoclangbat
Bài viết gốc: 327093
Tên lệnh: bongbong xemdt maytinh
Chương 10.4 : Grread

- hi dạo này nhoc cũng hơi bận lâu lâu xỉa đc vài dòng, hàm grread này khó xơi thật ^^, nhoc làm đc 3 bài, ý tưởng thì nhoc nghĩ ra còn thuật toán nhoc nhặt từ nhiều nơi mỗi chỗ 1 ít ^^ về gán ghép mông má lại, trong đó có 2 hàm nhoc mót của Lee mac thấy hay hay, còn lại ko nhớ đc nguồn cụ thể kaka, chương này khó thật, bài nhoc chắc ko công phu kỳ công đc như sư huynh Hiep ^^, mong anh Ket nhẹ tay...

>>

- hi dạo này nhoc cũng hơi bận lâu lâu xỉa đc vài dòng, hàm grread này khó xơi thật ^^, nhoc làm đc 3 bài, ý tưởng thì nhoc nghĩ ra còn thuật toán nhoc nhặt từ nhiều nơi mỗi chỗ 1 ít ^^ về gán ghép mông má lại, trong đó có 2 hàm nhoc mót của Lee mac thấy hay hay, còn lại ko nhớ đc nguồn cụ thể kaka, chương này khó thật, bài nhoc chắc ko công phu kỳ công đc như sư huynh Hiep ^^, mong anh Ket nhẹ tay với nhoc ^^,  vượt đc ải này

- show hàng tí cho zui  :P

https://www.youtube.com/watch?v=xroNtNc1eKo&feature=youtu.be

(defun c:bongbong(/ chay nhap code pt r)
  (vl-load-com)
  (setq	chay T
		r (getreal "\nNhap ban kinh")
  )
 
  (while (equal chay T)
    (setq nhap (grread T))
    (setq code (car nhap))
    (if	(equal code 5)
      (progn
	(setq pt (car (cdr nhap)))
	(tronkk pt r)
      )
    )

     (if	(equal code 25)
      (progn
	(princ "\nXong.\n")
	(setq chay nil)
	(redraw)
      )
    )
  )
  (princ)
)

(defun tronkk (tam bki  / clr i dau  ds_pt )
  (setq dau (polar tam 0 bki))
  (setq ds_pt (list 1 dau))

  (setq i 1)

  (setq clr 2)

  (repeat 359

    (setq dau (polar tam (/ (* i pi) 180.0) bki))

    (setq ds_pt (append ds_pt (list dau clr dau)))

    (setq i (1+ i))

    (setq clr (rem (1+ clr) 256))

  )

  (setq ds_pt (append ds_pt (list (polar tam 0 bki))))

  (grvecs ds_pt)

  (princ)

  (grtext)

)
;================================================================================
(defun c:xemDT (/ chay last_ent mo code pt ss dt)
  (vl-load-com)
  (princ "\n")
  (setq	chay T
	last_ent 0
  )
  (while (equal chay T)
    (setq mo (grread nil 13 0))
    (setq code (car mo))
    (if	(equal code 5)
      (progn
	(setq pt (car (cdr mo)))
	(setq ss (ssget pt '((0 . "LWPOLYLINE,CIRCLE,SPLINE"))))
	(if (/= ss nil)
	  (progn
	    (sssetfirst nil ss)
	    (setq ent (ssname ss 0)
		  dt  (vla-get-area (vlax-ename->vla-object ent))
	    )
	   		  (redraw)
		(LM:DisplayGrText (cadr mo) (LM:GrText (strcat "DT: " (rtos dt 2 2) (chr 178))) 3 10 15)
		(setq last_ent dt)
		       
	  )
	  (progn
	  (redraw)
	  (sssetfirst nil)
	  
	  )
	)
      )
    )
	;
    (if	(equal code 25)
      (progn
	(princ "\nKet thuc\n")
	(setq chay nil)
	(sssetfirst nil)
      )
    )
  )
   (princ)
)
;=======================================================
(defun K:text (pt height string	justify	layer textstyle	mau ang	xdata /
	       lst)
  (setq	lst (list '(0 . "TEXT")
		  (cons 10 pt)
		  (cons 40 height)
		  (cons 1 string)
		  (cons	50
			(if ang
			  ang
			  0
			)
		  )
		  (cons 8 layer)
		  (cons	7
			(if textstyle
			  textstyle
			  (getvar 'textstyle)
			)
		  )
		  (cons	62
			(if mau
			  mau
			  256
			)
		  )

	    )
  )
  (if xdata
    (setq lst (append lst xdata))
  )
  (setq justify (strcase justify))
  (cond	((= justify "L")
	 (setq Lst (append Lst (list (cons 72 0) (cons 11 pt))))
	)
	((= justify "C")
	 (setq Lst (append Lst (list (cons 72 1) (cons 11 pt))))
	)
	((= justify "R")
	 (setq Lst (append Lst (list (cons 72 2) (cons 11 pt))))
	)
	((= justify "M")
	 (setq Lst (append Lst (list (cons 72 4) (cons 11 pt))))
	)
	((= justify "MC")
	 (setq Lst (append Lst (list (cons 72 1) (cons 73 2) (cons 11 pt))))
	)
	((= justify "MR")
	 (setq Lst (append Lst (list (cons 72 2) (cons 73 2) (cons 11 pt))))
	)
  )
  (entmakex Lst)
)					;end K:text
(defun K_line (PT1 PT2 Layer Linetype LTScale xdata)
  (entmakex (list '(0 . "LINE")
		  (cons	8
			(if Layer
			  Layer
			  (getvar "Clayer")
			)
		  )
		  (cons	6
			(if Linetype
			  Linetype
			  "bylayer"
			)
		  )
		  (cons	48
			(if LTScale
			  LTScale
			  1
			)
		  )
		  (cons 10 PT1)
		  (cons 11 PT2)
		  (cons	-3
			(if xdata
			  (list xdata)
			  nil
			)
		  )
	    )
  )
)
					;===================================================================================================
;;;;;;;;;;;============================================================
(defun K_Pline (listpoint closed Layer Linetype LTScale xdata / Lst)
  (setq	Lst (list '(0 . "LWPOLYLINE")
		  '(100 . "AcDbEntity")
		  (cons	8
			(if Layer
			  Layer
			  (getvar "Clayer")
			)
		  )
		  (cons	6
			(if Linetype
			  Linetype
			  "bylayer"
			)
		  )
		  (cons	48
			(if LTScale
			  LTScale
			  1
			)
		  )
		  '(100 . "AcDbPolyline")
		  (cons 90 (length listpoint))
		  (cons	70
			(if closed
			  1
			  0
			)
		  )
	    )
  )
  (foreach PP listpoint
    (setq Lst (append Lst (list (cons 10 PP))))
  )
  (if xdata
    (setq Lst (append lst (list (cons -3 (list xdata)))))
  )
  (entmakex Lst)
)
					;end;=================================
(defun c:maytinh(/ pt p1 p2 p3 p4 p5 p6 p7 i j day1 ketqua pdau a b c tim_cho old_lup)
  (setvar 'osmode 0)
  (setvar 'cmdecho 0)
  (setq old_lup (getvar 'luprec))
  (setvar 'luprec 3)
;============================================================
(while (= (car (setq tim_cho (grread T 4 0))) 5)
(setq pdau (cadr tim_cho))
(setq a (mapcar '+ pdau '(20.0 0.0 0.0))
      b (mapcar '+ pdau '(20.0 -25.0 0.0))
	  c (mapcar '+ pdau '(0.0 -25.0 0.0)))
(redraw)
(grvecs (list 1 pdau a a b b c c pdau))
(LM:DisplayGrText pdau (LM:GrText "Diem dat may tinh ^^") 3 20 -25)
)
(if (= (car tim_cho) 3)
(progn
(setq pdau (cadr tim_cho))
(setq pt pdau)
(redraw)
)
)
;============================================================
    (if pt
    (progn
      (setq p1 (mapcar '+ pt '(20.0 0.0 0.0))
	    p2 (mapcar '+ pt '(0.0 -25.0 0.0))
	    p3 (mapcar '+ pt '(0.0 -5.0 0.0))
	    p4 (mapcar '+ pt '(20.0 -5.0 0.0))
	    p5 (mapcar '+ pt '(20.0 -25.0 0.0))
      )
(setq i 2.5)
(setq j 0)
 (repeat 4
 (K:text (mapcar '+ p3 (list i -2.5 0.0)) 2 (itoa (setq day1 (+ 1 j))) "M" "khung" nil nil nil nil)
 (K:text (mapcar '+ p3 (list i -7.5 0.0)) 2 (itoa (setq day1 (+ 5 j))) "M" "khung" nil nil nil nil)
  (setq i (+ i 5.0))
 (setq j (1+ j))
 )
 (K:text (mapcar '+ p3 (list 2.5 -12.5 0.0)) 2 "9" "M" "khung" nil nil nil nil)
 (K:text (mapcar '+ p3 (list 7.5 -12.5 0.0)) 2 "0" "M" "khung" nil nil nil nil)
 (K:text (mapcar '+ p3 (list 17.5 -12.5 0.0)) 4 "=" "MC" "khung" nil nil nil nil)
 (K:text (mapcar '+ p3 (list 12.5 -12.5 0.0)) 4 "." "M" "khung" nil nil nil nil)
 ;=====================================================================================
 (K:text (mapcar '+ p3 (list 2.5 -17.5 0.0)) 4 "+" "MC" "khung" nil nil nil nil)
 (K:text (mapcar '+ p3 (list 7.5 -17.5 0.0)) 4 "_" "M" "khung" nil nil nil nil)
 (K:text (mapcar '+ p3 (list 12.5 -17.5 0.0)) 2 "X" "M" "khung" nil nil nil nil)
 (K:text (mapcar '+ p3 (list 17.5 -17.5 0.0)) 3 "/" "M" "khung" nil nil nil nil)
 ;=========================================================
  
      (K_Pline (list pt p1 p5 p2) 1 "khung" nil nil nil)
      (K_line p3 p4 "khung" nil nil nil)
 (setq p6 (polar p3 0 10.0) p7 (mapcar '+ p3 '(10.0 -20.0 0.0)))
 (K_line p6 p7 "khung" nil nil nil)
 (setq ketqua (mapcar '+ pt '(19.5 -2.5 0.0)))
 (setq ent_text (K:text ketqua 3 "0" "MR" "khung" nil nil nil nil))
;=================================================================
     
    )
  )
  (lay_du_lieu ent_text)
  (ssget "_CP" (list pt p1 p5 p2))
  (vl-cmdf ".erase" "P" "")
  (setvar 'cmdecho 1)
  (setvar 'luprec old_lup)
  (princ)
)

(defun lay_du_lieu (ento / pt0 chay text_1 text_2 phep_tinh tim_do code ss ent info kytu kq tim_do)
  (setq	chay T
	text_1	""
	text_2	""
	phep_tinh ""


  )
  (while (equal chay T)
    (setq tim_do (grread T 4 2))
    (setq code (car tim_do))
    (if	(equal code 3)
      (progn
		(setq pt0 (car (cdr tim_do)))
		(setq ss (ssget pt0 '((0 . "TEXT"))))
	(if (/= ss nil)
	  (progn
	    (setq ent  (ssname ss 0)
		  info  (entget ent)
		  kytu (cdr (assoc 1 info))
	    )

	    (cond
	      ( (or (= kytu "+") (= kytu "_") (= kytu "X") (= kytu "/"))
	       (setq phep_tinh kytu)
	       (princ phep_tinh)
	       (princ "\n")
		  
	       (entmod (subst (cons 1 phep_tinh)
			      (assoc 1 (entget ento))
			      (entget ento)
		       )
	       )
	       (if (/= text_2 "")
		 (setq text_1 (rtos (tinhkq text_1 text_2 phep_tinh) 2)
		       text_2 "")
	       )
	      )
	      ((= kytu "=")
					
	       (setq kq (princ (tinhkq text_1 text_2 phep_tinh)))
	       (princ "\n")
		 
	       (entmod (subst (cons 1 (rtos kq 2))
			      (assoc 1 (entget ento))
			     (entget ento)
		       )
	       )

				
	       (setq text_1 ""
		     text_2 ""
		     phep_tinh	""
	       )
	      )
	      (T
	       (if (= phep_tinh "")
		 (progn
		   (setq text_1 (strcat text_1 kytu))
		   (princ text_1)
		   (princ "\n")
		  
		   (entmod (subst (cons 1 text_1)
				  (assoc 1 (entget ento))
				  (entget ento)
			   )
		   )
		 )

		 (progn
		   (setq text_2 (strcat text_2 kytu))
		   (princ text_2)
		   (princ "\n")
		   
		   (entmod (subst (cons 1 text_2)
				  (assoc 1 (entget ento))
				 (entget ento)
			   )
		   )
		 )
	       )
	      )
	    )

	  )
	)
      )
    )

        (if	(equal code 25)
      (progn
 	(princ "\nXong\n")
	(setq chay nil)
		)
    )
  )
  (princ)
)

(defun tinhkq (so1 so2 pheptoan / num1 num2 kq)
  (setq	num1 (distof so1)
	num2 (distof so2)
  )

  (cond
    ((= pheptoan "+")
     (setq kq (+ num1 num2))
    )
    ((= pheptoan "_")
     (setq kq (- num1 num2))
    )
    ((= pheptoan "X")
     (setq kq (* num1 num2))
    )
    ((= pheptoan "/")
     (setq kq (/ num1 num2))
    )
  )
  kq
)
;===========================================================================
;=======================================================
(defun LM:DisplayGrText ( pnt vec col xof yof / scl )
    (setq scl (/ (getvar 'viewsize) (cadr (getvar 'screensize)))
          pnt (trans pnt 1 2)
    )
    (grvecs (cons col vec)
        (list
            (list scl 0.0 0.0 (+ (car  pnt) (* xof scl)))
            (list 0.0 scl 0.0 (+ (cadr pnt) (* yof scl)))
            (list 0.0 0.0 scl 0.0)
           '(0.0 0.0 0.0 1.0)
        )
    )
)
;========================================================================================================
(defun LM:GrText ( str / asc lst vec xco yco )
    (setq vec
       '(
            (033 045 045 065 135)
            (034 104 134 107 137)
            (035 043 063 046 066 084 094 087 097 115 135 118 138 072 078 103 109)
            (036 025 035 052 052 043 047 058 078 083 087 092 112 123 127 118 118 135 135)
            (037 052 052 063 063 074 074 085 085 096 096 107 107 118 118 129 129 047 048 067 068 056 056 059 059 113 114 133 134 122 122 125 125)
            (038 043 046 049 049 052 072 057 058 067 068 076 076 079 079 083 083 085 085 094 094 103 123 134 136 127 127)
            (039 105 135)
            (040 017 017 026 036 045 105 116 126 137 137)
            (041 014 014 025 035 046 106 115 125 134 134)
            (042 073 074 076 077 084 086 092 098 104 106 113 114 116 117)
            (043 055 115 082 084 086 088)
            (044 034 035 045 046 055 057)
            (045 083 088)
            (046 045 046 055 056)
            (047 052 052 063 063 074 074 085 085 096 096 107 107 118 118 129 129)
            (048 044 047 134 137 053 123 058 128)
            (049 044 048 124 125 056 136)
            (050 043 048 053 053 064 064 075 075 086 086 097 097 108 128 134 137 123 123)
            (051 053 053 044 047 058 088 095 097 108 128 134 137 123 123)
            (052 046 048 057 137 078 078 073 076 083 083 094 094 105 115 126 126)
            (053 053 053 044 047 058 088 094 097 093 133 134 138)
            (054 044 047 058 088 095 097 084 084 053 113 124 124 135 137)
            (055 044 054 065 075 086 096 107 117 128 138 133 137 123 123)
            (056 044 047 094 097 134 137 053 083 058 088 103 123 108 128)
            (057 044 046 057 057 068 128 097 097 084 086 134 137 093 123)
            (058 045 046 055 056 095 096 105 106)
            (059 034 035 045 046 055 057 095 096 105 106)
            (060 047 047 056 056 065 065 074 074 083 083 094 094 105 105 116 116 127 127)
            (061 073 078 093 098)
            (062 043 043 054 054 065 065 076 076 087 087 096 096 105 105 114 114 123 123)
            (063 045 045 065 075 086 086 097 097 108 128 134 137 123 123)
            (064 034 038 043 043 052 112 123 123 134 137 128 128 079 119 068 068 065 066 105 106 077 107 074 094)
            (065 041 043 047 049 052 062 058 068 073 077 083 093 087 097 104 114 106 116 125 135 133 134)
            (066 042 047 053 123 058 088 108 128 094 097 132 137)
            (067 044 047 053 053 058 058 062 112 123 123 134 136 127 127 108 138)
            (068 042 046 057 057 127 127 132 136 068 118 053 123)
            (069 042 048 058 058 094 095 086 106 132 137 128 138 053 123)
            (070 042 045 094 095 086 106 132 137 128 138 053 123)
            (071 044 047 053 053 058 078 086 089 062 112 123 123 134 136 127 127 108 138)
            (072 041 043 047 049 131 133 137 139 093 097 052 122 058 128)
            (073 043 047 133 137 055 125)
            (074 052 062 043 046 057 127 135 139)
            (075 042 044 048 049 132 134 136 138 053 123 084 085 095 095 106 116 127 127 076 076 067 067 058 058)
            (076 042 047 048 058 053 123 132 135)
            (077 041 043 047 049 052 122 058 128 131 132 138 139 103 113 107 117 084 094 086 096 065 075)
            (078 041 044 131 132 136 139 052 122 048 128 113 113 094 104 085 085 066 076 057 057)
            (079 044 046 053 053 057 057 123 123 127 127 134 136 062 112 068 118)
            (080 042 045 084 087 132 137 053 123 098 128)
            (081 134 136 123 123 127 127 112 062 118 068 053 053 057 057 044 046 035 036 023 024 027 028)
            (082 042 044 048 049 132 137 123 053 128 098 084 087 076 076 067 067 058 058)
            (083 042 062 053 053 044 047 058 078 086 087 093 095 102 122 133 136 127 127 118 138)
            (084 043 047 055 125 132 138 131 121 139 129)
            (085 044 046 052 053 057 058 062 122 068 128 131 133 137 139)
            (086 045 055 064 074 066 076 083 103 087 107 112 122 118 128 131 133 137 139)
            (087 043 063 047 067 072 092 074 094 076 096 078 098 101 121 105 115 109 129 131 132 138 139)
            (088 041 043 047 049 131 133 137 139 052 052 058 058 063 063 067 067 074 074 076 076 085 095 104 104 106 106 113 113 117 117 122 122 128 128)
            (089 043 047 055 085 094 094 096 096 103 113 107 117 122 122 128 128 131 133 137 139)
            (090 122 122 058 058 132 138 042 048 128 128 052 052 063 063 074 074 085 095 106 106 117 117)
            (091 015 017 135 137 025 125)
            (092 122 122 113 113 104 104 095 095 086 086 077 077 068 068 059 059)
            (093 014 016 134 136 026 126)
            (094 102 102 113 113 124 124 135 135 126 126 117 117 108 108)
            (095 021 029)
            (096 125 125 134 134)
            (097 043 046 048 048 052 072 057 097 083 086 103 106)
            (098 042 043 045 046 054 054 057 058 068 098 097 097 105 106 094 094 132 132 053 133)
            (099 044 046 053 053 057 058 052 092 093 093 104 106 097 098 108 108)
            (100 044 045 047 048 052 092 053 053 056 056 093 093 104 105 096 096 136 136 057 137)
            (101 044 046 053 053 057 058 052 092 093 093 104 106 097 098 088 088 073 078)
            (102 043 046 054 124 093 093 095 096 135 137 128 128)
            (103 013 016 022 032 027 097 107 108 066 066 096 096 054 055 104 105 063 063 093 093 062 092)
            (104 042 044 046 048 057 097 053 133 132 132 094 094 105 106)
            (105 043 047 055 105 103 104 135 135)
            (106 022 022 013 015 026 106 104 105 136 136)
            (107 042 044 046 048 053 133 132 132 057 057 066 066 074 075 085 085 096 106 107 108)
            (108 043 047 055 135 133 134)
            (109 041 043 045 046 048 049 052 102 055 105 058 108 101 101 093 093 104 104 096 096 107 107)
            (110 042 044 046 048 053 103 057 097 102 102 094 094 105 106)
            (111 044 046 104 106 053 053 057 057 093 093 097 097 052 092 058 098)
            (112 012 015 023 103 102 102 054 054 094 094 045 046 105 106 057 058 097 098 068 088)
            (113 015 018 027 107 108 108 056 056 096 096 044 045 104 105 052 053 092 093 062 082)
            (114 042 046 054 104 102 103 095 095 106 108 099 099)
            (115 052 052 043 047 058 068 073 077 082 092 103 107 098 098)
            (116 045 047 058 058 054 124 102 103 105 107)
            (117 102 102 106 106 053 103 056 056 044 045 047 107 048 048)
            (118 045 045 054 064 056 066 073 083 077 087 092 092 098 098 101 103 107 109)
            (119 043 053 047 057 062 092 064 084 066 086 068 098 101 103 095 105 107 109)
            (120 042 044 046 048 102 104 106 108 053 053 057 057 093 093 097 097 064 064 066 066 084 084 086 086 075 075)
            (121 012 013 024 024 035 045 054 064 056 066 073 083 077 087 092 092 098 098 101 103 107 109)
            (122 092 092 058 058 102 108 042 048 097 097 086 086 075 075 064 064 053 053)
            (123 016 017 025 065 073 074 085 125 136 137)
            (124 015 135)
            (125 014 015 026 066 077 078 086 126 134 135)
            (126 112 122 133 134 125 125 116 117 128 138)
            (145 114 116 125 126 136 137)
            (146 114 115 125 126 135 137)
            (161 045 115 135 135)
            (162 026 036 045 047 058 058 054 054 053 093 094 094 098 098 105 107 116 126)
            (163 043 048 054 074 083 086 094 094 103 123 134 136 117 127)
            (164 083 083 088 088 133 133 138 138 094 097 124 127 104 114 107 117)
            (165 044 046 055 075 081 089 094 094 096 096 101 103 107 109 113 113 117 117 122 122 128 128 131 133 137 139)
            (166 015 055 095 135)
            (167 042 042 032 036 047 047 056 057 065 065 074 074 083 083 092 102 068 078 087 087 096 096 105 105 113 114 123 123 134 138 128 128)
            (168 134 134 137 137)
            (169 054 057 063 063 068 068 072 122 079 129 133 133 138 138 144 147 075 076 087 087 084 114 125 126 117 117)
            (170 063 067 084 086 088 088 093 103 097 127 114 116 134 136)
            (171 055 055 064 064 073 073 082 082 093 093 104 104 115 115 058 058 067 067 076 076 085 085 096 096 107 107 118 118)
            (172 068 098 092 097)
            (173 083 088)
            (174 054 057 063 063 068 068 072 122 079 129 133 133 138 138 144 147 074 124 095 096 125 126 077 087 107 117)
            (175 151 159)
            (176 105 106 114 124 117 127 135 136)
            (177 042 048 092 098 065 085 105 125)
            (178 084 087 095 095 106 106 117 127 135 136 124 124)
            (179 094 094 085 086 097 107 116 116 127 127 135 136 124 124)
            (180 125 125 136 136)
            (181 012 012 023 113 044 047 049 049 058 118)
            (182 045 045 049 049 048 128 046 126 133 139 122 125 112 115 102 105 092 095 083 085)
            (183 085 086 095 096)
            (184 014 015 026 026 035 035)
            (185 084 086 124 124 095 135)
            (186 063 067 084 086 134 136 093 123 097 127)
            (187 052 052 063 063 074 074 085 085 094 094 103 103 112 112 055 055 066 066 077 077 088 088 097 097 106 106 115 115)
            (188 048 098 059 059 055 057 065 065 076 076 087 087 083 133 122 122 052 052 063 063 074 074 085 085 096 096 107 107 118 118 129 129)
            (189 046 049 057 057 068 068 079 089 097 098 086 086 083 133 122 122 052 052 063 063 074 074 085 085 096 096 107 107 118 118 129 129)
            (190 048 098 059 059 055 057 065 065 076 076 087 087 092 092 083 084 095 105 114 114 125 125 133 134 122 122 052 052 063 063 074 074 085 085 096 096 107 107 118 118 129 129)
            (191 044 047 058 058 053 073 084 084 095 095 106 116 136 136)
            (192 041 043 047 049 052 062 058 068 073 077 083 093 087 097 104 114 106 116 125 135 133 134 155 155 164 164)
            (193 041 043 047 049 052 062 058 068 073 077 083 093 087 097 104 114 106 116 125 135 133 134 155 155 166 166)
            (194 041 043 047 049 052 062 058 068 073 077 083 093 087 097 104 114 106 116 125 135 133 134 154 154 165 165 156 156)
            (195 041 043 047 049 052 062 058 068 073 077 083 093 087 097 104 114 106 116 125 135 133 134 152 152 163 165 155 157 168 168)
            (196 041 043 047 049 052 062 058 068 073 077 083 093 087 097 104 114 106 116 125 135 133 134 163 163 167 167)
            (197 041 043 047 049 052 062 058 068 073 077 083 093 087 097 104 114 106 116 125 135 133 134 145 145 154 154 165 165 156 156)
            (198 041 043 045 049 052 062 073 093 104 114 125 125 084 085 059 059 056 126 097 098 088 088 108 108 134 139 129 129)
            (199 044 047 053 053 058 058 062 112 123 123 134 136 127 127 108 138 014 015 026 026 035 035)
            (200 042 048 058 058 094 095 086 106 132 137 128 138 053 123 156 156 165 165)
            (201 042 048 058 058 094 095 086 106 132 137 128 138 053 123 155 155 166 166)
            (202 042 048 058 058 094 095 086 106 132 137 128 138 053 123 154 154 165 166 157 157)
            (203 042 048 058 058 094 095 086 106 132 137 128 138 053 123 164 164 167 167)
            (204 043 047 133 137 055 125 155 155 164 164)
            (205 043 047 133 137 055 125 155 155 166 166)
            (206 043 047 133 137 055 125 154 154 165 165 156 156)
            (207 043 047 133 137 055 125 163 163 167 167)
            (208 042 046 057 057 127 127 132 136 068 118 053 123 091 092 094 095)
            (209 041 044 131 132 137 139 052 122 048 128 113 113 094 104 085 085 066 076 057 057 152 152 163 165 155 157 168 168)
            (210 044 046 053 053 057 057 123 123 127 127 134 136 062 112 068 118 155 155 164 164)
            (211 044 046 053 053 057 057 123 123 127 127 134 136 062 112 068 118 155 155 166 166)
            (212 044 046 053 053 057 057 123 123 127 127 134 136 062 112 068 118 154 154 165 165 156 156)
            (213 044 046 053 053 057 057 123 123 127 127 134 136 062 112 068 118 152 152 163 165 155 157 168 168)
            (214 044 046 053 053 057 057 123 123 127 127 134 136 062 112 068 118 163 163 167 167)
            (215 052 052 063 063 074 074 085 085 096 096 107 107 118 118 058 058 067 067 076 076 094 094 103 103 112 112)
            (216 044 046 053 053 057 057 123 123 127 127 134 136 062 112 068 118 043 043 064 074 085 095 106 116 137 137)
            (217 044 046 052 053 057 058 062 122 068 128 131 133 137 139 155 155 164 164)
            (218 044 046 052 053 057 058 062 122 068 128 131 133 137 139 155 155 166 166)
            (219 044 046 052 053 057 058 062 122 068 128 131 133 137 139 154 154 165 165 156 156)
            (220 044 046 052 053 057 058 062 122 068 128 131 133 137 139 163 163 167 167)
            (221 044 046 055 085 094 094 096 096 103 113 107 117 122 122 128 128 131 133 137 139 145 155 166 166)
            (222 042 044 132 132 053 133 074 077 104 107 088 098)
            (223 042 042 043 123 134 136 107 127 095 096 087 087 058 078 045 047)
            (224 043 046 048 048 052 072 057 097 083 086 103 106 125 125 134 134)
            (225 043 046 048 048 052 072 057 097 083 086 103 106 125 125 136 136)
            (226 043 046 048 048 052 072 057 097 083 086 103 106 124 124 135 135 126 126)
            (227 043 046 048 048 052 072 057 097 083 086 103 106 122 122 133 134 125 126 137 137)
            (228 043 046 048 048 052 072 057 097 083 086 103 106 133 133 137 137)
            (229 043 046 048 048 052 072 057 097 083 086 103 106 125 125 134 134 145 145 136 136)
            (230 042 044 046 048 059 059 051 071 082 084 102 104 055 095 076 079 089 099 106 108)
            (231 014 015 026 026 035 035 044 046 053 053 057 058 052 092 093 093 104 106 097 098 108 108)
            (232 044 046 053 053 057 058 052 092 093 093 104 106 097 098 088 088 073 078 125 125 134 134)
            (233 044 046 053 053 057 058 052 092 093 093 104 106 097 098 088 088 073 078 125 125 136 136)
            (234 044 046 053 053 057 058 052 092 093 093 104 106 097 098 088 088 073 078 124 124 135 135 126 126)
            (235 044 046 053 053 057 058 052 092 093 093 104 106 097 098 088 088 073 078 133 133 137 137)
            (236 043 047 055 105 103 104 125 125 134 134)
            (237 043 047 055 105 103 104 124 124 135 135)
            (238 043 047 055 105 103 104 124 124 135 135 126 126)
            (239 043 047 055 105 103 104 133 133 136 136)
            (240 044 046 053 053 057 057 052 082 058 088 083 083 087 107 094 096 116 116 113 114 125 125 134 134 136 137)
            (241 042 044 046 048 053 103 057 097 102 102 094 094 105 106 122 122 133 134 125 126 137 137)
            (242 044 046 104 106 053 053 057 057 093 093 097 097 052 092 058 098 125 125 134 134)
            (243 044 046 104 106 053 053 057 057 093 093 097 097 052 092 058 098 125 125 136 136)
            (244 044 046 104 106 053 053 057 057 093 093 097 097 052 092 058 098 124 124 135 135 126 126)
            (245 044 046 104 106 053 053 057 057 093 093 097 097 052 092 058 098 122 122 133 135 125 127 138 138)
            (246 044 046 104 106 053 053 057 057 093 093 097 097 052 092 058 098 133 133 137 137)
            (247 055 055 115 115 082 088)
            (248 044 046 104 106 053 053 057 057 093 093 097 097 052 092 058 098 042 042 064 064 075 075 086 086 108 108)
            (249 102 102 106 106 053 103 056 056 044 045 047 107 048 048 125 125 134 134)
            (250 102 102 106 106 053 103 056 056 044 045 047 107 048 048 125 125 136 136)
            (251 102 102 106 106 053 103 056 056 044 045 047 107 048 048 124 124 135 135 126 126)
            (252 102 102 106 106 053 103 056 056 044 045 047 107 048 048 133 133 137 137)
            (253 012 013 024 024 035 045 054 064 056 066 073 083 077 087 092 092 098 098 101 103 107 109 125 125 136 136)
            (254 012 015 132 132 023 133 054 054 045 046 057 058 068 088 094 094 105 106 097 098)
            (255 012 013 024 024 035 045 054 064 056 066 073 083 077 087 092 092 098 098 101 103 107 109 133 133 137 137)
        )
    )
    (eval
        (list 'defun 'LM:GrText '( str / asc lst vec xco yco )
            (list 'setq 'vec
                (list 'quote
                    (mapcar
                        (function
                            (lambda ( b )
                                (cons (car b)
                                    (mapcar
                                        (function
                                            (lambda ( a )
                                                (list (rem a 10) (/ a 10))
                                            )
                                        )
                                        (cdr b)
                                    )
                                )
                            )
                        )
                        vec
                    )
                )
            )
           '(setq xco 0 yco 0)
           '(repeat (strlen str)
                (setq asc (ascii str)
                      str (substr str 2)
                )
                (cond
                    (   (= 32 asc)
                        (setq xco (+ xco 09))
                    )
                    (   (= 09 asc)
                        (setq xco (+ xco 36))
                    )
                    (   (= 10 asc)
                        (setq xco 0
                              yco (- yco 16)
                        )
                    )
                    (   (setq lst
                            (cons
                                (mapcar
                                    (function
                                        (lambda ( a )
                                            (list (+ (car a) xco) (+ (cadr a) yco))
                                        )
                                    )
                                    (cdr (assoc asc vec))
                                )
                                lst
                            )
                        )
                        (setq xco (+ xco 9))
                    )
                )
            )
           '(apply 'append lst)
        )
    )
    (LM:GrText str)
)






<<

Filename: 327093_bongbong_xemdt_maytinh.lsp
Tác giả: bach1212
Bài viết gốc: 327135
Tên lệnh: knut gn
Lisp thống kê thông số đường cong

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=47442&pid=196992&st=0&#entry196992
;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=47442&pid=196822&st=0&#entry196822
;Kh&#235;i t&#185;o m&#233;t s&#232; th&#171;ng s&#232; cho v&#207;...
>>
;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=47442&pid=196992&st=0&#entry196992
;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=47442&pid=196822&st=0&#entry196822
;Kh&#235;i t&#185;o m&#233;t s&#232; th&#171;ng s&#232; cho v&#207; n&#243;t
;------------------------------------------------------
(defun C:knut ()
(setq hf (getreal "\nChieu cao text: "))
(command "dimstyle" "s" "Dimn" "dimstyle" "s" "Dran")
(command "-Style" "hoatfon" "hoatfon" hf "" "" "" "" "")
(command "-Layer" "n" "Text" "c" "4" "Text" "")
(command "-Layer" "n" "Dim" "c" "8" "DIm" "")
(command "-Layer" "n" "Khuat" "c" "4" "Khuat" "l" "Dashed" "Khuat" "")
(Princ)
)
;;;Chuong trinh chinh (Ve va thong ke cac yeu to cua duong cong)
(setq tlv (getint "\nNhap ty le ban ve nut 1/... :"))
(defun c:GN ()
(setq cmd (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq sttdinh (getint "\nNhap so thu tu dinh :"))
(setq es (entsel "\nChon cung tron can ve:"))
(setq dbang (getpoint "\nChon vi tri dat bang thong ke:"))
(setq osm (getvar "osmode"))
(setvar "osmode" 0)
(setq tdt (car es)
  	dra (cadr es)
  	ent (entget tdt)
  	cen (cdr (assoc 10 ent))
  	goc1 (cdr (assoc 50 ent))
  	goc2 (cdr (assoc 51 ent))
  	bk (cdr (assoc 40 ent))
)
(setq td1 (polar cen goc1 bk)
  	td2 (polar cen goc2 bk)
)
(setq mid (list (/ (+ (car td1) (car td2)) 2) (/ (+ (cadr td1) (cadr td2)) 2) (caddr td1)))
(setq goc (angle cen mid))
(setq goctam (abs (- goc2 goc1)))
(if (< goctam pi)
	(setq goct goctam)
	(setq goct (- (* 2 pi) goctam))
)
(setq dtam (/ bk (cos (/ goct 2))))
(setq dinh (polar cen goc dtam))
(setq T (rtos (/ (* (distance dinh td1) tlv) 1000) 2 2)
  	P (rtos (/ (* (- dtam bk) tlv) 1000) 2 2)
  	K (rtos (/ (* (* goct bk) tlv) 1000) 2 2)
 	Ssbk (rtos (/ (* bk tlv) 1000) 2 2)
)
(command "-layer" "s" "khuat" "" ".line" td1 dinh td2 "")
(command "-layer" "s" "DIM" "" "Dimstyle" "" "Dimn")
(setq kckt (* 2.2 (getvar "dimtxt")) dkt1 (polar td1 goc1 kckt))
(command "DIMALIGNED" dinh td1 dkt1)
(setq  dkt2 (polar td2 goc2 kckt))
(command "DIMALIGNED" dinh td2 dkt2)
(command "Dimstyle" "" "Dran" "DIMRADIUS" tdt dra "")
;V&#207; khung th&#232;ng k&#170; nut
;--------------------------------
(setq  xb (+ (car dbang) (* 11 (getvar "textsize"))) yb (- (cadr dbang) (* 10.25 (getvar "textsize"))) dbang2 (list xb yb (caddr dbang)) odbang (polar dbang (/ (* 3 pi) 4) (/ (getvar "textsize") 5)) odbang2 (polar dbang2 (- (* 2 pi) (/ pi 4)) (/ (getvar "textsize") 5)))
(command ".layer" "s" "text" "" ".rectang" odbang odbang2 ".rectang" dbang dbang2) (command "change" "l" "" "p" "c" "1" "")
;X&#246; l&#253; b&#182;ng th&#232;ng k&#170;
;-----------------------------
(setq gockep (angtos (- pi goct) 1 4))
(setq Kiem1 (substr gockep 2 1) kiem2 (substr gockep 3 1) kiem3 (substr gockep 4 1))
(cond ((= kiem1 "d") (setq dau (substr gockep 1 1) cuoi (substr gockep 3))) ((= kiem2 "d") (setq dau (substr gockep 1 2) cuoi (substr gockep 4))) ((= kiem3 "d") (setq dau (substr gockep 1 3) cuoi (substr gockep 5)))
)
(setq  gockep (strcat (strcat dau "%%d") cuoi))
;----------------------------
(setq nhan (rtos sttdinh 2 0))
(setq chugoc (strcat (strcat "A" nhan) (strcat "=" gockep)))
(setq chubk (strcat (strcat (strcat "R" nhan) (strcat "=" ssbk)) "m"))
(setq chutt (strcat (strcat (strcat "T" nhan) (strcat "=" T)) "m"))
(setq  chup (strcat (strcat (strcat "P" nhan) (strcat "=" P)) "m"))
(setq  chucd (strcat (strcat (strcat "K" nhan) (strcat "=" K)) "m"))
(setq dong1 (polar dbang (- (* 2 pi) (/ (* 9 pi) 24)) (* 1.75 (getvar "textsize")))
    	dong2 (polar dong1 (+ pi (/ pi 2)) (* 2 (getvar "textsize")))
    	dong3 (polar dong2 (+ pi (/ pi 2)) (* 2 (getvar "textsize")))
    	dong4 (polar dong3 (+ pi (/ pi 2)) (* 2 (getvar "textsize")))
    	dong5 (polar dong4 (+ pi (/ pi 2)) (* 2 (getvar "textsize")))
)
(command "-layer" "s" "Text" "" ".text" dong1 "" chugoc ".text" dong2 "" chubk ".text" dong3 "" chutt ".text" dong4 "" chup ".text" dong5 "" chucd)
(setq tendinh (strcat "A" nhan))
(command ".text" dinh "" tendinh)
(command "insert" "nut" dinh "" "" "" )
(setvar "osmode" osm)
(setvar "cmdecho" cmd) (princ)
(setvar "osmode" 15359)
)

Lisp đó đây ah.

Mình không nhớ lisp này là ai viết nữa cả.

Mình vẫn dùng cad 2007 như từ trước đến giờ.

Lỗi là khi xuất kết quả, toàn bộ các thông số R, T, P, K của tất cả các đường cong khác nhau đều là 0.02 với 0.01. Không đúng với giá trị thực tế.

XIn gửi file đính kèm để các bạn kiểm tra hộ nhé.

http://www.mediafire.com/download/argi2wcom81amtx/111.dwg

 

A1 = 71d31'09''
R1 = 21.97m
T1 = 30.51m
P1 = 15.63m
K1 = 41.61m

<<

Filename: 327135_knut_gn.lsp
Tác giả: trinhhoanghieu090
Bài viết gốc: 327470
Tên lệnh: xuat
Hỏi về Lisp (thuật toán, ý tưởng, coding,...)

Bạn thử như này xem:

Các bác giúp e vụ này với ạ:

Bài toán của e là có 2 dánh sách lst1 và lst 2, các phần tử trong danh sách đều có kiểu là string, số phần tử trong lst1 lớn hơn số phần tử trong lst2 là 1 phần tử

Ví dụ: lst1 có 10 phần tử, lst2 có 9 phần tử. Bây giờ e muốn write-line 2 danh sách này ra file txt có dạng như sau:

" phần tử 1 của lst1

  phần tử 1...

>>

Bạn thử như này xem:

Các bác giúp e vụ này với ạ:

Bài toán của e là có 2 dánh sách lst1 và lst 2, các phần tử trong danh sách đều có kiểu là string, số phần tử trong lst1 lớn hơn số phần tử trong lst2 là 1 phần tử

Ví dụ: lst1 có 10 phần tử, lst2 có 9 phần tử. Bây giờ e muốn write-line 2 danh sách này ra file txt có dạng như sau:

" phần tử 1 của lst1

  phần tử 1 của lst2

  phần tử 2 của lst1

  phần tử 2 của lst2

 phần tử 3 của lst 1

.......

"

Kiểu các phần tử kẹp nhau giống như bảng khối lượng có tên cọc và khoảng cách lẻ ý ạ.

E định viết vòng lặp nhưng vẫn chưa biết lặp kiểu gì cho phù hợp với cả 2 danh sách.

Cảm ơn các bác đã quan tâm.

(defun c:xuat(/ fn f lista listb n)
(setq fn (getfiled "Copyright Of Trinh Van Hieu - Surveyor " "" "txt" 1)
	   f (open fn "w")
	   lista '("A" "B" "C" "D" "E")
	   listb '(1 2 3 4 )
	   n 0
 )
	   (repeat  (length lista)
	   (write-line (nth n lista) f)
	   (if (<= (+ n 1)  (length listb)) (write-line (itoa (nth n listb)) f))
	   (setq n (+ 1 n))
 	   )
	  (close f)
      (princ)
)

<<

Filename: 327470_xuat.lsp
Tác giả: nhoclangbat
Bài viết gốc: 327560
Tên lệnh: bongbong
Chương 10.4 : Grread

- hi nhoc đã sữa lại bài bong bong xuống đúng 13 dòng như anh Ket nhận xét ^^

(defun c:bongbong(/ nhap pt r)
  (setq	r (getreal "\nNhap ban kinh"))
  (while (and (/= (car (setq nhap (grread T))) 25) (/= (car (setq nhap (grread T))) 3))
  (if (= (car nhap) 5)
    (progn
    (setq pt (cadr nhap))
	(tronkk pt r)
	)
 		)
      )
(redraw)
  (princ)
)
(defun tronkk (tam bki  / clr i dau  ds_pt )
  (setq dau (polar tam 0 bki))
  (setq ds_pt...
>>

- hi nhoc đã sữa lại bài bong bong xuống đúng 13 dòng như anh Ket nhận xét ^^

(defun c:bongbong(/ nhap pt r)
  (setq	r (getreal "\nNhap ban kinh"))
  (while (and (/= (car (setq nhap (grread T))) 25) (/= (car (setq nhap (grread T))) 3))
  (if (= (car nhap) 5)
    (progn
    (setq pt (cadr nhap))
	(tronkk pt r)
	)
 		)
      )
(redraw)
  (princ)
)
(defun tronkk (tam bki  / clr i dau  ds_pt )
  (setq dau (polar tam 0 bki))
  (setq ds_pt (list 1 dau))

  (setq i 1)

  (setq clr 2)

  (repeat 359

    (setq dau (polar tam (/ (* i pi) 180.0) bki))

    (setq ds_pt (append ds_pt (list dau clr dau)))

    (setq i (1+ i))

    (setq clr (rem (1+ clr) 256))

  )

  (setq ds_pt (append ds_pt (list (polar tam 0 bki))))

  (grvecs ds_pt)

  (princ)

  (grtext)

)

<<

Filename: 327560_bongbong.lsp
Tác giả: thanhduan2407
Bài viết gốc: 327558
Tên lệnh: cv3d
phương pháp chọn và lọc đối tượng theo điều kiện

Các bác cho em hỏi 1 chút.

Em có 1 Polyline 2D và 1 tập Text cao độ ở xung quanh Polyline đó.

Mục đích của em là Convert Polyline 2D đó sang 3D Polyline  với giá trị Z là lấy nội dung Text gần nhất với đỉnh Polyline và nằm trong bán kính cho...

>>

Các bác cho em hỏi 1 chút.

Em có 1 Polyline 2D và 1 tập Text cao độ ở xung quanh Polyline đó.

Mục đích của em là Convert Polyline 2D đó sang 3D Polyline  với giá trị Z là lấy nội dung Text gần nhất với đỉnh Polyline và nằm trong bán kính cho phép nhập vào.

Bài toán này em làm được rồi, tuy nhiên về tốc độ là hơi chậm.

Thuật toán em là xét từng đỉnh Polyline, tính khoảng cách từ đỉnh tới các Text đó, Sort theo khoảng cách tăng dần, cắt lấy thằng đầu tiên và kiểm tra khoảng cách đó có nhỏ hơn bán kính nhập vào không? Nếu thỏa mãn thì lấy tọa độ X,Y của đỉnh và Z = nội dung Text thỏa mãn đó, không thì Z = 0. Sau đó em sẽ có 1 list tọa độ và vẽ Polyline 3D.

Tốc độ chậm là do phải tính khoảng cách từ  đỉnh tới tất cả các Text nên nó chậm.

Em hỏi là có cách nào không cần tính khoảng cách từ đỉnh tới tất cả các Text mà chỉ tính khoảng cách từ đỉnh tới các Text nằm trong bán kính nhập vào hay không?

Nếu xét theo kiểu Zoom Window thì nếu bản vẽ nặng zoom sẽ đơ và bị ảnh hưởng bởi cửa sổ Zoom.

Nhờ các bác cho em cách thức với ạ!

 

(defun C:CV3D (/ ss0 ss1 ss2 LtsObjPline  )
(setvar "CMDECHO" 0)
(Alert (strcat "\nQu\U+00E9t ch\U+1ECDn Text v\U+00E0 Polyline : "))
(setq ss0 (ssget (list (cons 0 "TEXT,LWPOLYLINE"))))
(setq LtsText (vl-remove nil (mapcar '(lambda(y) (if (= (acet-dxf 0 (entget y)) "TEXT") y nil)) (acet-ss-to-list ss0))))
(setq ss1 (acet-ss-to-list (ChonTextSo (acet-list-to-ss LtsText))))
(setq ss2 (vl-sort (vl-sort ss1 '(lambda(x y) (< (car (TD:Text-Base x)) (car (TD:Text-Base y))))) '(lambda(x y) (< (cadr (TD:Text-Base x)) (cadr (TD:Text-Base y))))))
  
(setq LtsObjPline (vl-remove nil (mapcar '(lambda(y) (if (= (acet-dxf 0 (entget y)) "LWPOLYLINE") y nil)) (acet-ss-to-list ss0))))
  

(or *fz* (setq *fz* 0.5))
(setq fz (getreal (strcat "\nNh\U+1EADp b\U+00E1n k\U+00EDnh Text g\U+1EA7n nh\U+1EA5t t\U+1EDBi \U+0111\U+1EC9nh Polyline <"
		  (rtos *fz* 2 2)
		 "> :"
	  )
 )
)
(if (not fz) (setq fz *fz*) (setq *fz* fz))
(mapcar '(lambda (x) (CV1PL3D x ss2 fz)) LtsObjPline)
(princ)
)



(defun CV1PL3D (ObjPline LtsEnameText fz /  LtsVertext Lts1 Pnt_i i P1  )
(setq LtsVertext (acet-geom-vertex-list ObjPline))
(setq Lts1 (list))
(setq Pnt_i (list))
(setq i 0)
(repeat (length LtsVertext)
	(progn
		(setq P1 (nth i LtsVertext))
	  	(setq Pnt_i (TGN P1 LtsEnameText fz))
		(setq Lts1 (append Lts1 (list Pnt_i)))
	)
(setq i (+ i 1))
)
(entdel ObjPline)
(MakePolyline3D Lts1)
)

(defun TGN ( Pnt ssText fz /  P1  EnameTGN   )
(setq P1 (list (car Pnt) (cadr Pnt)))
(setq EnameTGN  (car (vl-sort ssText '(lambda(x y) (< (distance (list (car (TD:Text-Base x)) (cadr (TD:Text-Base x))) P1) (distance (list (car (TD:Text-Base y)) (cadr (TD:Text-Base y))) P1))))))
(if (< (distance (list (car (TD:Text-Base EnameTGN)) (cadr (TD:Text-Base EnameTGN))) P1) fz )
    (setq PntPL (list (car Pnt) (cadr Pnt) (atof (cdr (assoc 1 (entget EnameTGN))))))
    (setq PntPL (list (car Pnt) (cadr Pnt) 0))
)
PntPL
)

(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 MakePolyline3D (vtcs)
  (entmake
    (list
    '(0 . "POLYLINE")
    '(66 . 1)
    '(70 . 8)
    )
  )
  (foreach vtx vtcs
    (entmake
      (list
      '(0 . "VERTEX")
      (cons 10 vtx)
      '(70 . 32)
      )
    )
  )
  (entmake '((0 . "SEQEND")))
)

(defun ChonTextSo (ss / i ent str ss1) 
    (progn
      (setq i	0
	    ss1	(ssadd)
      )
      (repeat (sslength ss)
	(setq ent (ssname ss i)
	      str (cdr(assoc 1 (entget ent)))
	      i	  (+ 1 i)
	)
	(if (distof str 2)
	  (ssadd ent ss1)
	)
      )
      (if (> (sslength ss1) 0)
	ss1
      )      
    )
)

 


<<

Filename: 327558_cv3d.lsp
Tác giả: nhoclangbat
Bài viết gốc: 327587
Tên lệnh: bongbong
xin trợ giúp về làm tròn text

- nhoc mới thử viết bạn test thử ^^

(defun c:bongbong(/ c ss ename info text1 so num)
(setq c -1)
(prompt "Chon text so: ")
 (if (setq ss (ssget '((0 . "TEXT"))))
 (progn
    (while (setq ename (ssname ss (setq c (1+ c))))
      (if (setq num (distof (cdr (assoc 1 (entget ename)))))
            num
      );if
	  (if num
	  (progn
	   (setq info (entget ename))
	   (setq text1 (distof (rtos (distof (cdr (assoc 1 info))) 2 2)))
	   (if (or...
>>

- nhoc mới thử viết bạn test thử ^^

(defun c:bongbong(/ c ss ename info text1 so num)
(setq c -1)
(prompt "Chon text so: ")
 (if (setq ss (ssget '((0 . "TEXT"))))
 (progn
    (while (setq ename (ssname ss (setq c (1+ c))))
      (if (setq num (distof (cdr (assoc 1 (entget ename)))))
            num
      );if
	  (if num
	  (progn
	   (setq info (entget ename))
	   (setq text1 (distof (rtos (distof (cdr (assoc 1 info))) 2 2)))
	   (if (or (> (rem text1 0.1) 0.05) (equal (rem text1 0.1) 0.05 0.01))
	   (setq so (rtos (lamtron text1 0.1) 2 2))
	   (setq so (rtos (- text1 (rem text1 0.1)) 2 2))
	   )
	   (entmod (subst (cons 1 so) (assoc 1 info) info))
	   )
	   )
	   )
  )
 )
(princ)
)
(defun lamtron (n k / sodu)
  (setq sodu (rem n k))
  (if (/= sodu 0)
    (setq n (+ (- n sodu) k))
  )
  n
)	   

<<

Filename: 327587_bongbong.lsp
Tác giả: nhoclangbat
Bài viết gốc: 327595
Tên lệnh: cvpl
phương pháp chọn và lọc đối tượng theo điều kiện

- hi nhoc thử binh lại theo cách này bớt đc 2 hàm pntvongtron với tgn1 , chạy thử thấy cũng ra đc ^^, mà ko pit với khối lượng lớn thì ra sao ^^\

(defun C:CVPL(/ ObjPline  minp maxp pl Lts1 Pnt_i Pnt LtsVertext P1 P1a P1b LtsText ss1 ss2 )
(setvar "CMDECHO" 0)
(defun *error* ( msg )
		(if Olmode (setvar 'osmode Olmode))
		(if (not (member msg '("*BREAK,*CANCEL*,*EXIT*")))
		    (princ (strcat "\nError: "...
>>

- hi nhoc thử binh lại theo cách này bớt đc 2 hàm pntvongtron với tgn1 , chạy thử thấy cũng ra đc ^^, mà ko pit với khối lượng lớn thì ra sao ^^\

(defun C:CVPL(/ ObjPline  minp maxp pl Lts1 Pnt_i Pnt LtsVertext P1 P1a P1b LtsText ss1 ss2 )
(setvar "CMDECHO" 0)
(defun *error* ( msg )
		(if Olmode (setvar 'osmode Olmode))
		(if (not (member msg '("*BREAK,*CANCEL*,*EXIT*")))
		    (princ (strcat "\nError: " msg))
		)
		(princ)
)
(setq Olmode (getvar "osmode"));;;LUU CHE DO BAT DIEM OSNAP
(setvar "OSMODE" 0)
(if (setq ObjPline (car (entsel "\nChon Pline: ")))
(progn
;(setq pl (vlax-ename->vla-object ObjPline))
;(vla-getboundingbox pl 'minp 'maxp)
;(setq minp (safearray-value minp))
;(setq maxp (safearray-value maxp))
;(command "Zoom" "W" minp maxp)

(or *fz* (setq *fz* 0.5))
(setq fz (getreal (strcat "\nNh\U+1EADp b\U+00E1n k\U+00EDnh Text g\U+1EA7n nh\U+1EA5t t\U+1EDBi \U+0111\U+1EC9nh Polyline <"
		  (rtos *fz* 2 2)
		 "> :"
	  )
 )
)
(if (not fz) (setq fz *fz*) (setq *fz* fz))
  
;(setq Lts1 (list))
(setq LtsVertext (acet-geom-vertex-list ObjPline))
(foreach Pnt LtsVertext
(setq pc (mapcar '+ Pnt (list  (- fz) (- fz) 0.0)))
(setq pd (mapcar '+ Pnt (list  fz  fz 0.0)))
(setq ppt (polar pc (/ pi 2) (- (cadr pd) (cadr pc))))
(setq ppd (polar pc 0 (- (car pd) (car pc))))
(setq kk (ssget "_CP"  (list pc ppt pd ppd) (list (cons 0 "TEXT"))))
(if kk
  (progn 
(setq LtsText (acet-ss-to-list (ChonTextSo  kk)))
;===========================================================
(setq EnameTGN  (car (vl-sort LtsText '(lambda(x y) (< (distance (list (car (TD:Text-Base x)) (cadr (TD:Text-Base x))) Pnt) (distance (list (car (TD:Text-Base y)) (cadr (TD:Text-Base y))) Pnt))))))
(if (< (distance (list (car (TD:Text-Base EnameTGN)) (cadr (TD:Text-Base EnameTGN))) Pnt) fz )
    (setq PntPL (list (car Pnt) (cadr Pnt) (atof (cdr (assoc 1 (entget EnameTGN))))))
    (setq PntPL (list (car Pnt) (cadr Pnt) 0))
)
;======================================================
  	;(setq Pnt_i (TGN1 Pnt 1))
	(setq Lts1 (append Lts1 (list PntPL)))
)
)
)
Lts1
(entdel ObjPline)
(MakePolyline3D Lts1)
); end progn objpline
) ;end if 
(setvar "OSMODE" Olmode)
(princ)
)




(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 MakePolyline3D (vtcs)
  (entmake
    (list
    '(0 . "POLYLINE")
    '(66 . 1)
    '(70 . 8)
    )
  )
  (foreach vtx vtcs
    (entmake
      (list
      '(0 . "VERTEX")
      (cons 10 vtx)
      '(70 . 32)
      )
    )
  )
  (entmake '((0 . "SEQEND")))
)

(defun ChonTextSo (ss / i ent str ss1) 
    (progn
      (setq i	0
	    ss1	(ssadd)
      )
      (repeat (sslength ss)
	(setq ent (ssname ss i)
	      str (cdr(assoc 1 (entget ent)))
	      i	  (+ 1 i)
	)
	(if (distof str 2)
	  (ssadd ent ss1)
	)
      )
      (if (> (sslength ss1) 0)
	ss1
      )      
    )
)

<<

Filename: 327595_cvpl.lsp
Tác giả: nhoclangbat
Bài viết gốc: 327921
Tên lệnh: maytinh
Chương 10.4 : Grread

- hi nhoc hiểu sao fail rùi ^^

- theo nhận xét anh Ket nhoc đã cố gắng sữa lại 2 bài cuối ^^, bài xemdt anh Ket xin cho nhoc bảo lưu 2 hàm LM nhoc thấy nó vui vui ^^, bài maytinh nhoc đã làm gọn lại xíu, nhưng thấy chưa đủ vị nên lại thêm 1 ít cờ no  :P  cho nó mặn mà 

;http://www.lee-mac.com/grtext.html
(defun c:xemDT (/ last_ent ent pt ss dt)
  (vl-load-com)
  (princ "\n")
  (setq...
>>

- hi nhoc hiểu sao fail rùi ^^

- theo nhận xét anh Ket nhoc đã cố gắng sữa lại 2 bài cuối ^^, bài xemdt anh Ket xin cho nhoc bảo lưu 2 hàm LM nhoc thấy nó vui vui ^^, bài maytinh nhoc đã làm gọn lại xíu, nhưng thấy chưa đủ vị nên lại thêm 1 ít cờ no  :P  cho nó mặn mà 

;http://www.lee-mac.com/grtext.html
(defun c:xemDT (/ last_ent ent pt ss dt)
  (vl-load-com)
  (princ "\n")
  (setq last_ent 0)
  (while (/= (car (setq nhap (grread nil 13 0))) 25)
   	(setq pt (cadr nhap))
  (if (setq ss (ssget pt '((0 . "LWPOLYLINE,CIRCLE,SPLINE"))))
	  (progn
	    (sssetfirst nil ss)
	    (setq ent (ssname ss 0)
		  dt  (vla-get-area (vlax-ename->vla-object ent))
	    )
	   	(redraw)
		(LM:DisplayGrText pt (LM:GrText (strcat "DT: " (rtos dt 2 2) (chr 178))) 3 10 15)
		(setq last_ent dt)
	  )
	  (progn
	  (redraw)
	  (sssetfirst nil)
	  )
	)
      )
 (sssetfirst nil)
  (princ "Xong")
   (princ)
)
;=======================================================
(defun LM:DisplayGrText ( pnt vec col xof yof / scl )
    (setq scl (/ (getvar 'viewsize) (cadr (getvar 'screensize)))
          pnt (trans pnt 1 2)
    )
    (grvecs (cons col vec)
        (list
            (list scl 0.0 0.0 (+ (car  pnt) (* xof scl)))
            (list 0.0 scl 0.0 (+ (cadr pnt) (* yof scl)))
            (list 0.0 0.0 scl 0.0)
           '(0.0 0.0 0.0 1.0)
        )
    )
)
;========================================================================================================
(defun LM:GrText ( str / asc lst vec xco yco )
    (setq vec
       '(
            (033 045 045 065 135)
            (034 104 134 107 137)
            (035 043 063 046 066 084 094 087 097 115 135 118 138 072 078 103 109)
            (036 025 035 052 052 043 047 058 078 083 087 092 112 123 127 118 118 135 135)
            (037 052 052 063 063 074 074 085 085 096 096 107 107 118 118 129 129 047 048 067 068 056 056 059 059 113 114 133 134 122 122 125 125)
            (038 043 046 049 049 052 072 057 058 067 068 076 076 079 079 083 083 085 085 094 094 103 123 134 136 127 127)
            (039 105 135)
            (040 017 017 026 036 045 105 116 126 137 137)
            (041 014 014 025 035 046 106 115 125 134 134)
            (042 073 074 076 077 084 086 092 098 104 106 113 114 116 117)
            (043 055 115 082 084 086 088)
            (044 034 035 045 046 055 057)
            (045 083 088)
            (046 045 046 055 056)
            (047 052 052 063 063 074 074 085 085 096 096 107 107 118 118 129 129)
            (048 044 047 134 137 053 123 058 128)
            (049 044 048 124 125 056 136)
            (050 043 048 053 053 064 064 075 075 086 086 097 097 108 128 134 137 123 123)
            (051 053 053 044 047 058 088 095 097 108 128 134 137 123 123)
            (052 046 048 057 137 078 078 073 076 083 083 094 094 105 115 126 126)
            (053 053 053 044 047 058 088 094 097 093 133 134 138)
            (054 044 047 058 088 095 097 084 084 053 113 124 124 135 137)
            (055 044 054 065 075 086 096 107 117 128 138 133 137 123 123)
            (056 044 047 094 097 134 137 053 083 058 088 103 123 108 128)
            (057 044 046 057 057 068 128 097 097 084 086 134 137 093 123)
            (058 045 046 055 056 095 096 105 106)
            (059 034 035 045 046 055 057 095 096 105 106)
            (060 047 047 056 056 065 065 074 074 083 083 094 094 105 105 116 116 127 127)
            (061 073 078 093 098)
            (062 043 043 054 054 065 065 076 076 087 087 096 096 105 105 114 114 123 123)
            (063 045 045 065 075 086 086 097 097 108 128 134 137 123 123)
            (064 034 038 043 043 052 112 123 123 134 137 128 128 079 119 068 068 065 066 105 106 077 107 074 094)
            (065 041 043 047 049 052 062 058 068 073 077 083 093 087 097 104 114 106 116 125 135 133 134)
            (066 042 047 053 123 058 088 108 128 094 097 132 137)
            (067 044 047 053 053 058 058 062 112 123 123 134 136 127 127 108 138)
            (068 042 046 057 057 127 127 132 136 068 118 053 123)
            (069 042 048 058 058 094 095 086 106 132 137 128 138 053 123)
            (070 042 045 094 095 086 106 132 137 128 138 053 123)
            (071 044 047 053 053 058 078 086 089 062 112 123 123 134 136 127 127 108 138)
            (072 041 043 047 049 131 133 137 139 093 097 052 122 058 128)
            (073 043 047 133 137 055 125)
            (074 052 062 043 046 057 127 135 139)
            (075 042 044 048 049 132 134 136 138 053 123 084 085 095 095 106 116 127 127 076 076 067 067 058 058)
            (076 042 047 048 058 053 123 132 135)
            (077 041 043 047 049 052 122 058 128 131 132 138 139 103 113 107 117 084 094 086 096 065 075)
            (078 041 044 131 132 136 139 052 122 048 128 113 113 094 104 085 085 066 076 057 057)
            (079 044 046 053 053 057 057 123 123 127 127 134 136 062 112 068 118)
            (080 042 045 084 087 132 137 053 123 098 128)
            (081 134 136 123 123 127 127 112 062 118 068 053 053 057 057 044 046 035 036 023 024 027 028)
            (082 042 044 048 049 132 137 123 053 128 098 084 087 076 076 067 067 058 058)
            (083 042 062 053 053 044 047 058 078 086 087 093 095 102 122 133 136 127 127 118 138)
            (084 043 047 055 125 132 138 131 121 139 129)
            (085 044 046 052 053 057 058 062 122 068 128 131 133 137 139)
            (086 045 055 064 074 066 076 083 103 087 107 112 122 118 128 131 133 137 139)
            (087 043 063 047 067 072 092 074 094 076 096 078 098 101 121 105 115 109 129 131 132 138 139)
            (088 041 043 047 049 131 133 137 139 052 052 058 058 063 063 067 067 074 074 076 076 085 095 104 104 106 106 113 113 117 117 122 122 128 128)
            (089 043 047 055 085 094 094 096 096 103 113 107 117 122 122 128 128 131 133 137 139)
            (090 122 122 058 058 132 138 042 048 128 128 052 052 063 063 074 074 085 095 106 106 117 117)
            (091 015 017 135 137 025 125)
            (092 122 122 113 113 104 104 095 095 086 086 077 077 068 068 059 059)
            (093 014 016 134 136 026 126)
            (094 102 102 113 113 124 124 135 135 126 126 117 117 108 108)
            (095 021 029)
            (096 125 125 134 134)
            (097 043 046 048 048 052 072 057 097 083 086 103 106)
            (098 042 043 045 046 054 054 057 058 068 098 097 097 105 106 094 094 132 132 053 133)
            (099 044 046 053 053 057 058 052 092 093 093 104 106 097 098 108 108)
            (100 044 045 047 048 052 092 053 053 056 056 093 093 104 105 096 096 136 136 057 137)
            (101 044 046 053 053 057 058 052 092 093 093 104 106 097 098 088 088 073 078)
            (102 043 046 054 124 093 093 095 096 135 137 128 128)
            (103 013 016 022 032 027 097 107 108 066 066 096 096 054 055 104 105 063 063 093 093 062 092)
            (104 042 044 046 048 057 097 053 133 132 132 094 094 105 106)
            (105 043 047 055 105 103 104 135 135)
            (106 022 022 013 015 026 106 104 105 136 136)
            (107 042 044 046 048 053 133 132 132 057 057 066 066 074 075 085 085 096 106 107 108)
            (108 043 047 055 135 133 134)
            (109 041 043 045 046 048 049 052 102 055 105 058 108 101 101 093 093 104 104 096 096 107 107)
            (110 042 044 046 048 053 103 057 097 102 102 094 094 105 106)
            (111 044 046 104 106 053 053 057 057 093 093 097 097 052 092 058 098)
            (112 012 015 023 103 102 102 054 054 094 094 045 046 105 106 057 058 097 098 068 088)
            (113 015 018 027 107 108 108 056 056 096 096 044 045 104 105 052 053 092 093 062 082)
            (114 042 046 054 104 102 103 095 095 106 108 099 099)
            (115 052 052 043 047 058 068 073 077 082 092 103 107 098 098)
            (116 045 047 058 058 054 124 102 103 105 107)
            (117 102 102 106 106 053 103 056 056 044 045 047 107 048 048)
            (118 045 045 054 064 056 066 073 083 077 087 092 092 098 098 101 103 107 109)
            (119 043 053 047 057 062 092 064 084 066 086 068 098 101 103 095 105 107 109)
            (120 042 044 046 048 102 104 106 108 053 053 057 057 093 093 097 097 064 064 066 066 084 084 086 086 075 075)
            (121 012 013 024 024 035 045 054 064 056 066 073 083 077 087 092 092 098 098 101 103 107 109)
            (122 092 092 058 058 102 108 042 048 097 097 086 086 075 075 064 064 053 053)
            (123 016 017 025 065 073 074 085 125 136 137)
            (124 015 135)
            (125 014 015 026 066 077 078 086 126 134 135)
            (126 112 122 133 134 125 125 116 117 128 138)
            (145 114 116 125 126 136 137)
            (146 114 115 125 126 135 137)
            (161 045 115 135 135)
            (162 026 036 045 047 058 058 054 054 053 093 094 094 098 098 105 107 116 126)
            (163 043 048 054 074 083 086 094 094 103 123 134 136 117 127)
            (164 083 083 088 088 133 133 138 138 094 097 124 127 104 114 107 117)
            (165 044 046 055 075 081 089 094 094 096 096 101 103 107 109 113 113 117 117 122 122 128 128 131 133 137 139)
            (166 015 055 095 135)
            (167 042 042 032 036 047 047 056 057 065 065 074 074 083 083 092 102 068 078 087 087 096 096 105 105 113 114 123 123 134 138 128 128)
            (168 134 134 137 137)
            (169 054 057 063 063 068 068 072 122 079 129 133 133 138 138 144 147 075 076 087 087 084 114 125 126 117 117)
            (170 063 067 084 086 088 088 093 103 097 127 114 116 134 136)
            (171 055 055 064 064 073 073 082 082 093 093 104 104 115 115 058 058 067 067 076 076 085 085 096 096 107 107 118 118)
            (172 068 098 092 097)
            (173 083 088)
            (174 054 057 063 063 068 068 072 122 079 129 133 133 138 138 144 147 074 124 095 096 125 126 077 087 107 117)
            (175 151 159)
            (176 105 106 114 124 117 127 135 136)
            (177 042 048 092 098 065 085 105 125)
            (178 084 087 095 095 106 106 117 127 135 136 124 124)
            (179 094 094 085 086 097 107 116 116 127 127 135 136 124 124)
            (180 125 125 136 136)
            (181 012 012 023 113 044 047 049 049 058 118)
            (182 045 045 049 049 048 128 046 126 133 139 122 125 112 115 102 105 092 095 083 085)
            (183 085 086 095 096)
            (184 014 015 026 026 035 035)
            (185 084 086 124 124 095 135)
            (186 063 067 084 086 134 136 093 123 097 127)
            (187 052 052 063 063 074 074 085 085 094 094 103 103 112 112 055 055 066 066 077 077 088 088 097 097 106 106 115 115)
            (188 048 098 059 059 055 057 065 065 076 076 087 087 083 133 122 122 052 052 063 063 074 074 085 085 096 096 107 107 118 118 129 129)
            (189 046 049 057 057 068 068 079 089 097 098 086 086 083 133 122 122 052 052 063 063 074 074 085 085 096 096 107 107 118 118 129 129)
            (190 048 098 059 059 055 057 065 065 076 076 087 087 092 092 083 084 095 105 114 114 125 125 133 134 122 122 052 052 063 063 074 074 085 085 096 096 107 107 118 118 129 129)
            (191 044 047 058 058 053 073 084 084 095 095 106 116 136 136)
            (192 041 043 047 049 052 062 058 068 073 077 083 093 087 097 104 114 106 116 125 135 133 134 155 155 164 164)
            (193 041 043 047 049 052 062 058 068 073 077 083 093 087 097 104 114 106 116 125 135 133 134 155 155 166 166)
            (194 041 043 047 049 052 062 058 068 073 077 083 093 087 097 104 114 106 116 125 135 133 134 154 154 165 165 156 156)
            (195 041 043 047 049 052 062 058 068 073 077 083 093 087 097 104 114 106 116 125 135 133 134 152 152 163 165 155 157 168 168)
            (196 041 043 047 049 052 062 058 068 073 077 083 093 087 097 104 114 106 116 125 135 133 134 163 163 167 167)
            (197 041 043 047 049 052 062 058 068 073 077 083 093 087 097 104 114 106 116 125 135 133 134 145 145 154 154 165 165 156 156)
            (198 041 043 045 049 052 062 073 093 104 114 125 125 084 085 059 059 056 126 097 098 088 088 108 108 134 139 129 129)
            (199 044 047 053 053 058 058 062 112 123 123 134 136 127 127 108 138 014 015 026 026 035 035)
            (200 042 048 058 058 094 095 086 106 132 137 128 138 053 123 156 156 165 165)
            (201 042 048 058 058 094 095 086 106 132 137 128 138 053 123 155 155 166 166)
            (202 042 048 058 058 094 095 086 106 132 137 128 138 053 123 154 154 165 166 157 157)
            (203 042 048 058 058 094 095 086 106 132 137 128 138 053 123 164 164 167 167)
            (204 043 047 133 137 055 125 155 155 164 164)
            (205 043 047 133 137 055 125 155 155 166 166)
            (206 043 047 133 137 055 125 154 154 165 165 156 156)
            (207 043 047 133 137 055 125 163 163 167 167)
            (208 042 046 057 057 127 127 132 136 068 118 053 123 091 092 094 095)
            (209 041 044 131 132 137 139 052 122 048 128 113 113 094 104 085 085 066 076 057 057 152 152 163 165 155 157 168 168)
            (210 044 046 053 053 057 057 123 123 127 127 134 136 062 112 068 118 155 155 164 164)
            (211 044 046 053 053 057 057 123 123 127 127 134 136 062 112 068 118 155 155 166 166)
            (212 044 046 053 053 057 057 123 123 127 127 134 136 062 112 068 118 154 154 165 165 156 156)
            (213 044 046 053 053 057 057 123 123 127 127 134 136 062 112 068 118 152 152 163 165 155 157 168 168)
            (214 044 046 053 053 057 057 123 123 127 127 134 136 062 112 068 118 163 163 167 167)
            (215 052 052 063 063 074 074 085 085 096 096 107 107 118 118 058 058 067 067 076 076 094 094 103 103 112 112)
            (216 044 046 053 053 057 057 123 123 127 127 134 136 062 112 068 118 043 043 064 074 085 095 106 116 137 137)
            (217 044 046 052 053 057 058 062 122 068 128 131 133 137 139 155 155 164 164)
            (218 044 046 052 053 057 058 062 122 068 128 131 133 137 139 155 155 166 166)
            (219 044 046 052 053 057 058 062 122 068 128 131 133 137 139 154 154 165 165 156 156)
            (220 044 046 052 053 057 058 062 122 068 128 131 133 137 139 163 163 167 167)
            (221 044 046 055 085 094 094 096 096 103 113 107 117 122 122 128 128 131 133 137 139 145 155 166 166)
            (222 042 044 132 132 053 133 074 077 104 107 088 098)
            (223 042 042 043 123 134 136 107 127 095 096 087 087 058 078 045 047)
            (224 043 046 048 048 052 072 057 097 083 086 103 106 125 125 134 134)
            (225 043 046 048 048 052 072 057 097 083 086 103 106 125 125 136 136)
            (226 043 046 048 048 052 072 057 097 083 086 103 106 124 124 135 135 126 126)
            (227 043 046 048 048 052 072 057 097 083 086 103 106 122 122 133 134 125 126 137 137)
            (228 043 046 048 048 052 072 057 097 083 086 103 106 133 133 137 137)
            (229 043 046 048 048 052 072 057 097 083 086 103 106 125 125 134 134 145 145 136 136)
            (230 042 044 046 048 059 059 051 071 082 084 102 104 055 095 076 079 089 099 106 108)
            (231 014 015 026 026 035 035 044 046 053 053 057 058 052 092 093 093 104 106 097 098 108 108)
            (232 044 046 053 053 057 058 052 092 093 093 104 106 097 098 088 088 073 078 125 125 134 134)
            (233 044 046 053 053 057 058 052 092 093 093 104 106 097 098 088 088 073 078 125 125 136 136)
            (234 044 046 053 053 057 058 052 092 093 093 104 106 097 098 088 088 073 078 124 124 135 135 126 126)
            (235 044 046 053 053 057 058 052 092 093 093 104 106 097 098 088 088 073 078 133 133 137 137)
            (236 043 047 055 105 103 104 125 125 134 134)
            (237 043 047 055 105 103 104 124 124 135 135)
            (238 043 047 055 105 103 104 124 124 135 135 126 126)
            (239 043 047 055 105 103 104 133 133 136 136)
            (240 044 046 053 053 057 057 052 082 058 088 083 083 087 107 094 096 116 116 113 114 125 125 134 134 136 137)
            (241 042 044 046 048 053 103 057 097 102 102 094 094 105 106 122 122 133 134 125 126 137 137)
            (242 044 046 104 106 053 053 057 057 093 093 097 097 052 092 058 098 125 125 134 134)
            (243 044 046 104 106 053 053 057 057 093 093 097 097 052 092 058 098 125 125 136 136)
            (244 044 046 104 106 053 053 057 057 093 093 097 097 052 092 058 098 124 124 135 135 126 126)
            (245 044 046 104 106 053 053 057 057 093 093 097 097 052 092 058 098 122 122 133 135 125 127 138 138)
            (246 044 046 104 106 053 053 057 057 093 093 097 097 052 092 058 098 133 133 137 137)
            (247 055 055 115 115 082 088)
            (248 044 046 104 106 053 053 057 057 093 093 097 097 052 092 058 098 042 042 064 064 075 075 086 086 108 108)
            (249 102 102 106 106 053 103 056 056 044 045 047 107 048 048 125 125 134 134)
            (250 102 102 106 106 053 103 056 056 044 045 047 107 048 048 125 125 136 136)
            (251 102 102 106 106 053 103 056 056 044 045 047 107 048 048 124 124 135 135 126 126)
            (252 102 102 106 106 053 103 056 056 044 045 047 107 048 048 133 133 137 137)
            (253 012 013 024 024 035 045 054 064 056 066 073 083 077 087 092 092 098 098 101 103 107 109 125 125 136 136)
            (254 012 015 132 132 023 133 054 054 045 046 057 058 068 088 094 094 105 106 097 098)
            (255 012 013 024 024 035 045 054 064 056 066 073 083 077 087 092 092 098 098 101 103 107 109 133 133 137 137)
        )
    )
    (eval
        (list 'defun 'LM:GrText '( str / asc lst vec xco yco )
            (list 'setq 'vec
                (list 'quote
                    (mapcar
                        (function
                            (lambda ( b )
                                (cons (car b)
                                    (mapcar
                                        (function
                                            (lambda ( a )
                                                (list (rem a 10) (/ a 10))
                                            )
                                        )
                                        (cdr b)
                                    )
                                )
                            )
                        )
                        vec
                    )
                )
            )
           '(setq xco 0 yco 0)
           '(repeat (strlen str)
                (setq asc (ascii str)
                      str (substr str 2)
                )
                (cond
                    (   (= 32 asc)
                        (setq xco (+ xco 09))
                    )
                    (   (= 09 asc)
                        (setq xco (+ xco 36))
                    )
                    (   (= 10 asc)
                        (setq xco 0
                              yco (- yco 16)
                        )
                    )
                    (   (setq lst
                            (cons
                                (mapcar
                                    (function
                                        (lambda ( a )
                                            (list (+ (car a) xco) (+ (cadr a) yco))
                                        )
                                    )
                                    (cdr (assoc asc vec))
                                )
                                lst
                            )
                        )
                        (setq xco (+ xco 9))
                    )
                )
            )
           '(apply 'append lst)
        )
    )
    (LM:GrText str)
)



;http://www.lee-mac.com/grtext.html
;;ham tao text 2
(defun K:text (pt height string	justify	layer textstyle	mau ang	xdata /
	       lst)
  (setq	lst (list '(0 . "TEXT")
		  (cons 10 pt)
		  (cons 40 height)
		  (cons 1 string)
		  (cons	50
			(if ang
			  ang
			  0
			)
		  )
		  (cons 8 layer)
		  (cons	7
			(if textstyle
			  textstyle
			  (getvar 'textstyle)
			)
		  )
		  (cons	62
			(if mau
			  mau
			  256
			)
		  )

	    )
  )
  (if xdata
    (setq lst (append lst xdata))
  )
  (setq justify (strcase justify))
  (cond	((= justify "L")
	 (setq Lst (append Lst (list (cons 72 0) (cons 11 pt))))
	)
	((= justify "C")
	 (setq Lst (append Lst (list (cons 72 1) (cons 11 pt))))
	)
	((= justify "R")
	 (setq Lst (append Lst (list (cons 72 2) (cons 11 pt))))
	)
	((= justify "M")
	 (setq Lst (append Lst (list (cons 72 4) (cons 11 pt))))
	)
	((= justify "MC")
	 (setq Lst (append Lst (list (cons 72 1) (cons 73 2) (cons 11 pt))))
	)
	((= justify "MR")
	 (setq Lst (append Lst (list (cons 72 2) (cons 73 2) (cons 11 pt))))
	)
  )
  (entmakex Lst)
)					;end K:text
;;;;;;;;;;;============================================================
(defun K_Pline (listpoint closed Layer Linetype LTScale xdata / Lst)
  (setq	Lst (list '(0 . "LWPOLYLINE")
		  '(100 . "AcDbEntity")
		  (cons	8
			(if Layer
			  Layer
			  (getvar "Clayer")
			)
		  )
		  (cons	6
			(if Linetype
			  Linetype
			  "bylayer"
			)
		  )
		  (cons	48
			(if LTScale
			  LTScale
			  1
			)
		  )
		  '(100 . "AcDbPolyline")
		  (cons 90 (length listpoint))
		  (cons	70
			(if closed
			  1
			  0
			)
		  )
	    )
  )
  (foreach PP listpoint
    (setq Lst (append Lst (list (cons 10 PP))))
  )
  (if xdata
    (setq Lst (append lst (list (cons -3 (list xdata)))))
  )
  (entmakex Lst)
)
					;end;=================================
(defun c:maytinh(/ pt p1 p2 p3 p4 p5 p6 p7 i j day1 ketqua pdau a b c tim_cho old_lup ds_ent day_tinh)
(arxload "geomcal")
  (setvar 'osmode 0)
  (setvar 'cmdecho 0)
  (setq old_lup (getvar 'luprec))
  (setvar 'luprec 3)
;============================================================
(while (= (car (setq tim_cho (grread T 4 0))) 5)
(setq pdau (cadr tim_cho))
(setq a (mapcar '+ pdau '(20.0 0.0 0.0))
      b (mapcar '+ pdau '(20.0 -25.0 0.0))
	  c (mapcar '+ pdau '(0.0 -25.0 0.0)))
(redraw)
(grvecs (list 1 pdau a a b b c c pdau))
(LM:DisplayGrText pdau (LM:GrText "Diem dat may tinh ^^") 3 20 -25)
)
(if (= (car tim_cho) 3)
(progn
(setq pdau (cadr tim_cho))
(setq pt pdau)
(redraw)
)
)
;============================================================
    (if pt
    (progn
      (setq p1 (mapcar '+ pt '(20.0 0.0 0.0))
	    p2 (mapcar '+ pt '(0.0 -25.0 0.0))
	    p3 (mapcar '+ pt '(0.0 -5.0 0.0))
	    p4 (mapcar '+ pt '(20.0 -5.0 0.0))
	    p5 (mapcar '+ pt '(20.0 -25.0 0.0))
		p8 (mapcar '+ pt '(0.0 -2.5 0.0))
		p9 (mapcar '+ pt '(20.0 -2.5 0.0))
      )
(setq i 2.5)
(setq j 0)
 (repeat 4
 (K:text (mapcar '+ p3 (list i -2.5 0.0)) 2 (itoa (setq day1 (+ 1 j))) "M" "khung" nil nil nil nil)
 (K:text (mapcar '+ p3 (list i -7.5 0.0)) 2 (itoa (setq day1 (+ 5 j))) "M" "khung" nil nil nil nil)
  (setq i (+ i 5.0))
 (setq j (1+ j))
 )
 (K:text (mapcar '+ p3 (list 2.5 -12.5 0.0)) 2 "9" "M" "khung" nil nil nil nil)
 (K:text (mapcar '+ p3 (list 7.5 -12.5 0.0)) 2 "0" "M" "khung" nil nil nil nil)
 (K:text (mapcar '+ p3 (list 17.5 -12.5 0.0)) 4 "=" "MC" "khung" nil nil nil nil)
 (K:text (mapcar '+ p3 (list 12.5 -12.5 0.0)) 4 "." "M" "khung" nil nil nil nil)
 ;=====================================================================================
 (K:text (mapcar '+ p3 (list 2.5 -17.5 0.0)) 4 "+" "MC" "khung" nil nil nil nil)
 (K:text (mapcar '+ p3 (list 7.5 -17.5 0.0)) 6 "-" "MC" "khung" nil nil nil nil)
 (K:text (mapcar '+ p3 (list 12.5 -17.5 0.0)) 2 "X" "M" "khung" nil nil nil nil)
 (K:text (mapcar '+ p3 (list 17.5 -17.5 0.0)) 3 "/" "M" "khung" nil nil nil nil)
 (K:text (mapcar '+ pt (list 1.1 -1.25 0.0)) 1 "CE" "M" "khung" nil nil nil nil)
 (K:text (mapcar '+ p3 (list 6.25 -15.7 0.0)) 1 "(" "M" "khung" nil nil nil nil)
 (K:text (mapcar '+ p3 (list 8.75 -15.7 0.0)) 1 ")" "M" "khung" nil nil nil nil)
 ;=========================================================
  
      (K_Pline (list pt p1 p5 p2) 1 "khung" nil nil nil)
      (K_Pline (list p3 p4) nil "khung" nil nil nil)
 (setq p6 (polar p3 0 10.0) p7 (mapcar '+ p3 '(10.0 -20.0 0.0)))
 (K_Pline (list p6 p7) nil "khung" nil nil nil)
 (K_Pline (list p8 p9) nil "khung" nil nil nil)
 (setq ketqua (mapcar '+ pt '(19.5 -3.75 0.0)))
 (setq ent_text (K:text ketqua 1.5 "0" "MR" "khung" nil nil nil nil))
 (setq day_tinh (K:text (mapcar '+ pt '(19.5 -1.25 0.0)) 1.5 "0" "MR" "khung" nil nil nil nil))
;=================================================================
     
    )
  )
  (lay_du_lieu ent_text day_tinh)
  (if (setq ds_ent (ss2ent (ssget "X" '((0 . "LWPOLYLINE,TEXT") (8 . "khung")))))
  (foreach o ds_ent
  (entdel o))
  )
   (setvar 'cmdecho 1)
  (setvar 'luprec old_lup)
  (princ)
)

(defun lay_du_lieu (ento ent1 / pt0 tim_do ss ent info kytu kq tim_do chuoi_tinh)
	(setq chuoi_tinh "")
  (while (/= (car (setq tim_do (grread T 4 2))) 25)
   (if (= (car tim_do) 3)
   (progn
   		(setq pt0 (cadr tim_do))
		(setq ss (ssget pt0 '((0 . "TEXT") (8 . "khung"))))
	(if ss
	  (progn
	    (setq ent  (ssname ss 0)
		  info  (entget ent)
		  kytu (cdr (assoc 1 info))
	    )
	(cond 
	((= kytu "CE") (setq chuoi_tinh "") 
	  (entmod (subst (cons 1 "0") (assoc 1 (entget ent1)) (entget ent1)))
	  (entmod (subst (cons 1 "0") (assoc 1 (entget ento)) (entget ento))))
	((/= kytu "=")
	(setq chuoi_tinh (strcat chuoi_tinh kytu))
   (entmod (subst (cons 1 chuoi_tinh) (assoc 1 (entget ent1)) (entget ent1))))
	 ((= kytu "=")
	 (if (or (= (substr chuoi_tinh 1 1) "X") (= (substr chuoi_tinh 1 1) "/"))
	 (progn
	 (alert "Ban ko dc chon phep * / truoc chu so ^^")
	 (entmod (subst (cons 1 "0") (assoc 1 (entget ento)) (entget ento)))
	 )
	 (progn
     (setq kq (cal (thay_char chuoi_tinh "X" "*")))
	 (entmod (subst (cons 1 (rtos kq 2 3)) (assoc 1 (entget ento)) (entget ento)))
	 )
	 )
    )
	  
    )
	  )
	)
	  ); progn 3
 ) ;end if 3
   )
  (princ)
)
;===========================================================================
;=======================================================
(defun thay_char (str char_cu char_moi / datach kytu dem)
  (setq dem 1)
  (setq datach "")
  (repeat (strlen str)
  (if (= (setq kytu (substr str dem 1)) char_cu)
   (progn
  (setq kytu char_moi)
  (setq datach (strcat datach kytu))
    )
	(setq datach (strcat datach kytu))
	)
	(setq dem (1+ dem))
	)
  datach
)
;==============================================================
(defun ss2ent (ss / i Le e)
(setq i 0)
(repeat (sslength ss)     
(setq e (ssname ss i)        
Le (append Le (list e))        
i (1+ i)    ))
Le)
;===============
;=======================================================
(defun LM:DisplayGrText ( pnt vec col xof yof / scl )
    (setq scl (/ (getvar 'viewsize) (cadr (getvar 'screensize)))
          pnt (trans pnt 1 2)
    )
    (grvecs (cons col vec)
        (list
            (list scl 0.0 0.0 (+ (car  pnt) (* xof scl)))
            (list 0.0 scl 0.0 (+ (cadr pnt) (* yof scl)))
            (list 0.0 0.0 scl 0.0)
           '(0.0 0.0 0.0 1.0)
        )
    )
)
;========================================================================================================
(defun LM:GrText ( str / asc lst vec xco yco )
    (setq vec
       '(
            (033 045 045 065 135)
            (034 104 134 107 137)
            (035 043 063 046 066 084 094 087 097 115 135 118 138 072 078 103 109)
            (036 025 035 052 052 043 047 058 078 083 087 092 112 123 127 118 118 135 135)
            (037 052 052 063 063 074 074 085 085 096 096 107 107 118 118 129 129 047 048 067 068 056 056 059 059 113 114 133 134 122 122 125 125)
            (038 043 046 049 049 052 072 057 058 067 068 076 076 079 079 083 083 085 085 094 094 103 123 134 136 127 127)
            (039 105 135)
            (040 017 017 026 036 045 105 116 126 137 137)
            (041 014 014 025 035 046 106 115 125 134 134)
            (042 073 074 076 077 084 086 092 098 104 106 113 114 116 117)
            (043 055 115 082 084 086 088)
            (044 034 035 045 046 055 057)
            (045 083 088)
            (046 045 046 055 056)
            (047 052 052 063 063 074 074 085 085 096 096 107 107 118 118 129 129)
            (048 044 047 134 137 053 123 058 128)
            (049 044 048 124 125 056 136)
            (050 043 048 053 053 064 064 075 075 086 086 097 097 108 128 134 137 123 123)
            (051 053 053 044 047 058 088 095 097 108 128 134 137 123 123)
            (052 046 048 057 137 078 078 073 076 083 083 094 094 105 115 126 126)
            (053 053 053 044 047 058 088 094 097 093 133 134 138)
            (054 044 047 058 088 095 097 084 084 053 113 124 124 135 137)
            (055 044 054 065 075 086 096 107 117 128 138 133 137 123 123)
            (056 044 047 094 097 134 137 053 083 058 088 103 123 108 128)
            (057 044 046 057 057 068 128 097 097 084 086 134 137 093 123)
            (058 045 046 055 056 095 096 105 106)
            (059 034 035 045 046 055 057 095 096 105 106)
            (060 047 047 056 056 065 065 074 074 083 083 094 094 105 105 116 116 127 127)
            (061 073 078 093 098)
            (062 043 043 054 054 065 065 076 076 087 087 096 096 105 105 114 114 123 123)
            (063 045 045 065 075 086 086 097 097 108 128 134 137 123 123)
            (064 034 038 043 043 052 112 123 123 134 137 128 128 079 119 068 068 065 066 105 106 077 107 074 094)
            (065 041 043 047 049 052 062 058 068 073 077 083 093 087 097 104 114 106 116 125 135 133 134)
            (066 042 047 053 123 058 088 108 128 094 097 132 137)
            (067 044 047 053 053 058 058 062 112 123 123 134 136 127 127 108 138)
            (068 042 046 057 057 127 127 132 136 068 118 053 123)
            (069 042 048 058 058 094 095 086 106 132 137 128 138 053 123)
            (070 042 045 094 095 086 106 132 137 128 138 053 123)
            (071 044 047 053 053 058 078 086 089 062 112 123 123 134 136 127 127 108 138)
            (072 041 043 047 049 131 133 137 139 093 097 052 122 058 128)
            (073 043 047 133 137 055 125)
            (074 052 062 043 046 057 127 135 139)
            (075 042 044 048 049 132 134 136 138 053 123 084 085 095 095 106 116 127 127 076 076 067 067 058 058)
            (076 042 047 048 058 053 123 132 135)
            (077 041 043 047 049 052 122 058 128 131 132 138 139 103 113 107 117 084 094 086 096 065 075)
            (078 041 044 131 132 136 139 052 122 048 128 113 113 094 104 085 085 066 076 057 057)
            (079 044 046 053 053 057 057 123 123 127 127 134 136 062 112 068 118)
            (080 042 045 084 087 132 137 053 123 098 128)
            (081 134 136 123 123 127 127 112 062 118 068 053 053 057 057 044 046 035 036 023 024 027 028)
            (082 042 044 048 049 132 137 123 053 128 098 084 087 076 076 067 067 058 058)
            (083 042 062 053 053 044 047 058 078 086 087 093 095 102 122 133 136 127 127 118 138)
            (084 043 047 055 125 132 138 131 121 139 129)
            (085 044 046 052 053 057 058 062 122 068 128 131 133 137 139)
            (086 045 055 064 074 066 076 083 103 087 107 112 122 118 128 131 133 137 139)
            (087 043 063 047 067 072 092 074 094 076 096 078 098 101 121 105 115 109 129 131 132 138 139)
            (088 041 043 047 049 131 133 137 139 052 052 058 058 063 063 067 067 074 074 076 076 085 095 104 104 106 106 113 113 117 117 122 122 128 128)
            (089 043 047 055 085 094 094 096 096 103 113 107 117 122 122 128 128 131 133 137 139)
            (090 122 122 058 058 132 138 042 048 128 128 052 052 063 063 074 074 085 095 106 106 117 117)
            (091 015 017 135 137 025 125)
            (092 122 122 113 113 104 104 095 095 086 086 077 077 068 068 059 059)
            (093 014 016 134 136 026 126)
            (094 102 102 113 113 124 124 135 135 126 126 117 117 108 108)
            (095 021 029)
            (096 125 125 134 134)
            (097 043 046 048 048 052 072 057 097 083 086 103 106)
            (098 042 043 045 046 054 054 057 058 068 098 097 097 105 106 094 094 132 132 053 133)
            (099 044 046 053 053 057 058 052 092 093 093 104 106 097 098 108 108)
            (100 044 045 047 048 052 092 053 053 056 056 093 093 104 105 096 096 136 136 057 137)
            (101 044 046 053 053 057 058 052 092 093 093 104 106 097 098 088 088 073 078)
            (102 043 046 054 124 093 093 095 096 135 137 128 128)
            (103 013 016 022 032 027 097 107 108 066 066 096 096 054 055 104 105 063 063 093 093 062 092)
            (104 042 044 046 048 057 097 053 133 132 132 094 094 105 106)
            (105 043 047 055 105 103 104 135 135)
            (106 022 022 013 015 026 106 104 105 136 136)
            (107 042 044 046 048 053 133 132 132 057 057 066 066 074 075 085 085 096 106 107 108)
            (108 043 047 055 135 133 134)
            (109 041 043 045 046 048 049 052 102 055 105 058 108 101 101 093 093 104 104 096 096 107 107)
            (110 042 044 046 048 053 103 057 097 102 102 094 094 105 106)
            (111 044 046 104 106 053 053 057 057 093 093 097 097 052 092 058 098)
            (112 012 015 023 103 102 102 054 054 094 094 045 046 105 106 057 058 097 098 068 088)
            (113 015 018 027 107 108 108 056 056 096 096 044 045 104 105 052 053 092 093 062 082)
            (114 042 046 054 104 102 103 095 095 106 108 099 099)
            (115 052 052 043 047 058 068 073 077 082 092 103 107 098 098)
            (116 045 047 058 058 054 124 102 103 105 107)
            (117 102 102 106 106 053 103 056 056 044 045 047 107 048 048)
            (118 045 045 054 064 056 066 073 083 077 087 092 092 098 098 101 103 107 109)
            (119 043 053 047 057 062 092 064 084 066 086 068 098 101 103 095 105 107 109)
            (120 042 044 046 048 102 104 106 108 053 053 057 057 093 093 097 097 064 064 066 066 084 084 086 086 075 075)
            (121 012 013 024 024 035 045 054 064 056 066 073 083 077 087 092 092 098 098 101 103 107 109)
            (122 092 092 058 058 102 108 042 048 097 097 086 086 075 075 064 064 053 053)
            (123 016 017 025 065 073 074 085 125 136 137)
            (124 015 135)
            (125 014 015 026 066 077 078 086 126 134 135)
            (126 112 122 133 134 125 125 116 117 128 138)
            (145 114 116 125 126 136 137)
            (146 114 115 125 126 135 137)
            (161 045 115 135 135)
            (162 026 036 045 047 058 058 054 054 053 093 094 094 098 098 105 107 116 126)
            (163 043 048 054 074 083 086 094 094 103 123 134 136 117 127)
            (164 083 083 088 088 133 133 138 138 094 097 124 127 104 114 107 117)
            (165 044 046 055 075 081 089 094 094 096 096 101 103 107 109 113 113 117 117 122 122 128 128 131 133 137 139)
            (166 015 055 095 135)
            (167 042 042 032 036 047 047 056 057 065 065 074 074 083 083 092 102 068 078 087 087 096 096 105 105 113 114 123 123 134 138 128 128)
            (168 134 134 137 137)
            (169 054 057 063 063 068 068 072 122 079 129 133 133 138 138 144 147 075 076 087 087 084 114 125 126 117 117)
            (170 063 067 084 086 088 088 093 103 097 127 114 116 134 136)
            (171 055 055 064 064 073 073 082 082 093 093 104 104 115 115 058 058 067 067 076 076 085 085 096 096 107 107 118 118)
            (172 068 098 092 097)
            (173 083 088)
            (174 054 057 063 063 068 068 072 122 079 129 133 133 138 138 144 147 074 124 095 096 125 126 077 087 107 117)
            (175 151 159)
            (176 105 106 114 124 117 127 135 136)
            (177 042 048 092 098 065 085 105 125)
            (178 084 087 095 095 106 106 117 127 135 136 124 124)
            (179 094 094 085 086 097 107 116 116 127 127 135 136 124 124)
            (180 125 125 136 136)
            (181 012 012 023 113 044 047 049 049 058 118)
            (182 045 045 049 049 048 128 046 126 133 139 122 125 112 115 102 105 092 095 083 085)
            (183 085 086 095 096)
            (184 014 015 026 026 035 035)
            (185 084 086 124 124 095 135)
            (186 063 067 084 086 134 136 093 123 097 127)
            (187 052 052 063 063 074 074 085 085 094 094 103 103 112 112 055 055 066 066 077 077 088 088 097 097 106 106 115 115)
            (188 048 098 059 059 055 057 065 065 076 076 087 087 083 133 122 122 052 052 063 063 074 074 085 085 096 096 107 107 118 118 129 129)
            (189 046 049 057 057 068 068 079 089 097 098 086 086 083 133 122 122 052 052 063 063 074 074 085 085 096 096 107 107 118 118 129 129)
            (190 048 098 059 059 055 057 065 065 076 076 087 087 092 092 083 084 095 105 114 114 125 125 133 134 122 122 052 052 063 063 074 074 085 085 096 096 107 107 118 118 129 129)
            (191 044 047 058 058 053 073 084 084 095 095 106 116 136 136)
            (192 041 043 047 049 052 062 058 068 073 077 083 093 087 097 104 114 106 116 125 135 133 134 155 155 164 164)
            (193 041 043 047 049 052 062 058 068 073 077 083 093 087 097 104 114 106 116 125 135 133 134 155 155 166 166)
            (194 041 043 047 049 052 062 058 068 073 077 083 093 087 097 104 114 106 116 125 135 133 134 154 154 165 165 156 156)
            (195 041 043 047 049 052 062 058 068 073 077 083 093 087 097 104 114 106 116 125 135 133 134 152 152 163 165 155 157 168 168)
            (196 041 043 047 049 052 062 058 068 073 077 083 093 087 097 104 114 106 116 125 135 133 134 163 163 167 167)
            (197 041 043 047 049 052 062 058 068 073 077 083 093 087 097 104 114 106 116 125 135 133 134 145 145 154 154 165 165 156 156)
            (198 041 043 045 049 052 062 073 093 104 114 125 125 084 085 059 059 056 126 097 098 088 088 108 108 134 139 129 129)
            (199 044 047 053 053 058 058 062 112 123 123 134 136 127 127 108 138 014 015 026 026 035 035)
            (200 042 048 058 058 094 095 086 106 132 137 128 138 053 123 156 156 165 165)
            (201 042 048 058 058 094 095 086 106 132 137 128 138 053 123 155 155 166 166)
            (202 042 048 058 058 094 095 086 106 132 137 128 138 053 123 154 154 165 166 157 157)
            (203 042 048 058 058 094 095 086 106 132 137 128 138 053 123 164 164 167 167)
            (204 043 047 133 137 055 125 155 155 164 164)
            (205 043 047 133 137 055 125 155 155 166 166)
            (206 043 047 133 137 055 125 154 154 165 165 156 156)
            (207 043 047 133 137 055 125 163 163 167 167)
            (208 042 046 057 057 127 127 132 136 068 118 053 123 091 092 094 095)
            (209 041 044 131 132 137 139 052 122 048 128 113 113 094 104 085 085 066 076 057 057 152 152 163 165 155 157 168 168)
            (210 044 046 053 053 057 057 123 123 127 127 134 136 062 112 068 118 155 155 164 164)
            (211 044 046 053 053 057 057 123 123 127 127 134 136 062 112 068 118 155 155 166 166)
            (212 044 046 053 053 057 057 123 123 127 127 134 136 062 112 068 118 154 154 165 165 156 156)
            (213 044 046 053 053 057 057 123 123 127 127 134 136 062 112 068 118 152 152 163 165 155 157 168 168)
            (214 044 046 053 053 057 057 123 123 127 127 134 136 062 112 068 118 163 163 167 167)
            (215 052 052 063 063 074 074 085 085 096 096 107 107 118 118 058 058 067 067 076 076 094 094 103 103 112 112)
            (216 044 046 053 053 057 057 123 123 127 127 134 136 062 112 068 118 043 043 064 074 085 095 106 116 137 137)
            (217 044 046 052 053 057 058 062 122 068 128 131 133 137 139 155 155 164 164)
            (218 044 046 052 053 057 058 062 122 068 128 131 133 137 139 155 155 166 166)
            (219 044 046 052 053 057 058 062 122 068 128 131 133 137 139 154 154 165 165 156 156)
            (220 044 046 052 053 057 058 062 122 068 128 131 133 137 139 163 163 167 167)
            (221 044 046 055 085 094 094 096 096 103 113 107 117 122 122 128 128 131 133 137 139 145 155 166 166)
            (222 042 044 132 132 053 133 074 077 104 107 088 098)
            (223 042 042 043 123 134 136 107 127 095 096 087 087 058 078 045 047)
            (224 043 046 048 048 052 072 057 097 083 086 103 106 125 125 134 134)
            (225 043 046 048 048 052 072 057 097 083 086 103 106 125 125 136 136)
            (226 043 046 048 048 052 072 057 097 083 086 103 106 124 124 135 135 126 126)
            (227 043 046 048 048 052 072 057 097 083 086 103 106 122 122 133 134 125 126 137 137)
            (228 043 046 048 048 052 072 057 097 083 086 103 106 133 133 137 137)
            (229 043 046 048 048 052 072 057 097 083 086 103 106 125 125 134 134 145 145 136 136)
            (230 042 044 046 048 059 059 051 071 082 084 102 104 055 095 076 079 089 099 106 108)
            (231 014 015 026 026 035 035 044 046 053 053 057 058 052 092 093 093 104 106 097 098 108 108)
            (232 044 046 053 053 057 058 052 092 093 093 104 106 097 098 088 088 073 078 125 125 134 134)
            (233 044 046 053 053 057 058 052 092 093 093 104 106 097 098 088 088 073 078 125 125 136 136)
            (234 044 046 053 053 057 058 052 092 093 093 104 106 097 098 088 088 073 078 124 124 135 135 126 126)
            (235 044 046 053 053 057 058 052 092 093 093 104 106 097 098 088 088 073 078 133 133 137 137)
            (236 043 047 055 105 103 104 125 125 134 134)
            (237 043 047 055 105 103 104 124 124 135 135)
            (238 043 047 055 105 103 104 124 124 135 135 126 126)
            (239 043 047 055 105 103 104 133 133 136 136)
            (240 044 046 053 053 057 057 052 082 058 088 083 083 087 107 094 096 116 116 113 114 125 125 134 134 136 137)
            (241 042 044 046 048 053 103 057 097 102 102 094 094 105 106 122 122 133 134 125 126 137 137)
            (242 044 046 104 106 053 053 057 057 093 093 097 097 052 092 058 098 125 125 134 134)
            (243 044 046 104 106 053 053 057 057 093 093 097 097 052 092 058 098 125 125 136 136)
            (244 044 046 104 106 053 053 057 057 093 093 097 097 052 092 058 098 124 124 135 135 126 126)
            (245 044 046 104 106 053 053 057 057 093 093 097 097 052 092 058 098 122 122 133 135 125 127 138 138)
            (246 044 046 104 106 053 053 057 057 093 093 097 097 052 092 058 098 133 133 137 137)
            (247 055 055 115 115 082 088)
            (248 044 046 104 106 053 053 057 057 093 093 097 097 052 092 058 098 042 042 064 064 075 075 086 086 108 108)
            (249 102 102 106 106 053 103 056 056 044 045 047 107 048 048 125 125 134 134)
            (250 102 102 106 106 053 103 056 056 044 045 047 107 048 048 125 125 136 136)
            (251 102 102 106 106 053 103 056 056 044 045 047 107 048 048 124 124 135 135 126 126)
            (252 102 102 106 106 053 103 056 056 044 045 047 107 048 048 133 133 137 137)
            (253 012 013 024 024 035 045 054 064 056 066 073 083 077 087 092 092 098 098 101 103 107 109 125 125 136 136)
            (254 012 015 132 132 023 133 054 054 045 046 057 058 068 088 094 094 105 106 097 098)
            (255 012 013 024 024 035 045 054 064 056 066 073 083 077 087 092 092 098 098 101 103 107 109 133 133 137 137)
        )
    )
    (eval
        (list 'defun 'LM:GrText '( str / asc lst vec xco yco )
            (list 'setq 'vec
                (list 'quote
                    (mapcar
                        (function
                            (lambda ( b )
                                (cons (car b)
                                    (mapcar
                                        (function
                                            (lambda ( a )
                                                (list (rem a 10) (/ a 10))
                                            )
                                        )
                                        (cdr b)
                                    )
                                )
                            )
                        )
                        vec
                    )
                )
            )
           '(setq xco 0 yco 0)
           '(repeat (strlen str)
                (setq asc (ascii str)
                      str (substr str 2)
                )
                (cond
                    (   (= 32 asc)
                        (setq xco (+ xco 09))
                    )
                    (   (= 09 asc)
                        (setq xco (+ xco 36))
                    )
                    (   (= 10 asc)
                        (setq xco 0
                              yco (- yco 16)
                        )
                    )
                    (   (setq lst
                            (cons
                                (mapcar
                                    (function
                                        (lambda ( a )
                                            (list (+ (car a) xco) (+ (cadr a) yco))
                                        )
                                    )
                                    (cdr (assoc asc vec))
                                )
                                lst
                            )
                        )
                        (setq xco (+ xco 9))
                    )
                )
            )
           '(apply 'append lst)
        )
    )
    (LM:GrText str)
)



<<

Filename: 327921_maytinh.lsp
Tác giả: huunhantvxdts
Bài viết gốc: 328012
Tên lệnh: xkl
Xuẩt khối lượng trắc ngang qua excel

Đây là lisp mình mày mò viết nhờ trợ giúp trên diễn đàn. Về cơ bản là đã chạy đúng nhưng chưa ưng ý lắm.

1. Muốn nó zoom đến từng trắc ngang để có thể quan sát được số liệu (cái này chỉ liếc qua thôi đã thấy), Bởi có quá nhiều trắc ngang quá nên tìm dễ sót (Cái này đã vấp phải).

2. Muốn có dòng % đang xử lý ở dòng lệnh.

Hai cái trên mình cũng đã viết nhưng...

>>

Đây là lisp mình mày mò viết nhờ trợ giúp trên diễn đàn. Về cơ bản là đã chạy đúng nhưng chưa ưng ý lắm.

1. Muốn nó zoom đến từng trắc ngang để có thể quan sát được số liệu (cái này chỉ liếc qua thôi đã thấy), Bởi có quá nhiều trắc ngang quá nên tìm dễ sót (Cái này đã vấp phải).

2. Muốn có dòng % đang xử lý ở dòng lệnh.

Hai cái trên mình cũng đã viết nhưng không thây nó chạy chi cả, mong mọi người quan tâm giúp đỡ.

Cám ơn mọi người nhiều!

đây là lisp

(defun c:xkl (/ );lstkm point kcach point1 pointtim diemtam xuongdong kt)
   (defun sosanh (e1 e2 / p1 p2)
(setq p1 (car e1)
p2 (car e2)
)
(if (equal (cadr p1) (cadr p2) fuzz)
(< (car p1) (car p2))
(> (cadr p1) (cadr p2))
)
   )
   
(defun inra(lst)
(setq index 1
 oldy nil)
(foreach en lst
(if (equal oldy (cadr (car en)) fuzz)
(progn 
(if (< index 4)
 (progn 
	(princ "," fid) 
	(setq index (1+ index))
	)
 	(progn 
	(setq index 1) 
	(princ "\n" fid)
	)
 )
    )
(progn  
(if hangdau
 (progn (setq index 1) 
(princ "\n" fid))
 (setq hangdau t))
  )
      )
      (princ (cdr en) fid)
      (setq oldy (cadr (car en)))
 )
  )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  (prompt "\nChon doi tuong coc hoac ly trinh lam lop chuan.")  
  (setq dtltc (car (entsel)))
  (setq lop1 (cdr (assoc 8 (entget dtltc))))
  (prompt "\nChon doi tuong ghi dien tich lam lop chuan.")
  (setq lop2 (car (entsel)))
  (setq lop2 (cdr (assoc 8 (entget lop2))))
  (setq danhsachkm (acet-ss-to-list (ssget (list (cons 8 lop1) (cons 1 "K*")))))
  (setq lstkm (mapcar '(lambda (e) (cons (cdr (assoc 11 (entget e))) (cdr (assoc 1 (entget e))))) danhsachkm))
  (setq lstkm (vl-sort lstkm '(lambda(x y / tmx tmy) (setq tmx (timlt x) tmy (timlt y))
                 (or (< (car tmx) (car tmy))
    (and (= (car tmx) (car tmy)) (< (last tmx) (last tmy)))))))
  (setq ss (acet-ss-to-list (ssget "X" '((0 . "LINE")(8 . "ENTTNTUNHIEN")))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  (setq fn (getfiled "Chon file de save" "" "csv" 1))
  (setq fid (open fn "w"))
(setq dem1 1)
(setq sodt (length danhsachkm)
ta 
            (chr 8)
stxoa (strcat ta ta ta ta ta ta ta ta ta ta ta ta ta ta 
            ta ta ta ta ta ta)
stxuly "Xu ly duoc: "
ptcu nil
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  (foreach ent lstkm
    (setq point (car ent))
    (setq kcach (distance point (cdr (assoc 11 (entget (nth 0 ss))))))
    (foreach enxt ss
      (setq point1 (cdr (assoc 11 (entget enxt))))
      (setq toay (cadr point1))
      (if (and (< (distance point1 point) kcach) (< toay (cadr point)) (equal (car point1) (car point) 1))
(progn
 (setq pointtim (cdr (assoc 11 (entget enxt))))
 (setq kcach (distance pointtim point))
)
      )
    )
    (setq diemtam (polar pointtim (/ pi 2) (/ kcach 2)))
;;; zoom den tung trac ngang nhung khong thay no chay 
;;;; 
    (command "ZOOM" "C" diemtam (+ kcach 20))
    (setq dd (acet-ss-to-list (ssget "C" (polar pointtim (/ pi 4) 0.1 ) (polar pointtim (/ pi -4) 0.1 ) '((0 . "LINE")(8 . "ENTTNTUNHIEN")))))
    (setq diemdau (cdr (assoc 10 (entget (car dd)))))
    (setq diemcuoi (cdr (assoc 11 (entget (car dd)))))
    (setq diemtren (polar point (/ pi 2) 10))
    (command ".RECTANGLE" diemdau diemtren)
    (setq text (ssget "C" diemdau diemtren (list (cons 0 "text"))))
    (setq lst0 (ss2ent text lop1))
    (setq lst0 (mapcar '(lambda (e) (cons (cdr (assoc 10 (entget e))) (cdr (assoc 1 (entget e))))) lst0))
    (setq lst2 (ss2ent text lop2))
    (setq lst2 (mapcar '(lambda (e) (cons (cdr (assoc 10 (entget e))) (cdr (assoc 1 (entget e))))) lst2))
    (setq
caotext (cdr (assoc 40 (entget (ssname text 0))))
fuzz (* caotext 1.0)
lst0 (vl-sort lst0 'sosanh)
lst2 (vl-sort lst2 'sosanh)
    )
(setq xuongdong 0)
(if (= kt nil) (setq kt 0))
(foreach em lst0
(if (= kt 0)
(if (= xuongdong 0)
(progn 
(princ (cdr em) fid) 
(princ "\n" fid)
(setq xuongdong 1))
 (if (= xuongdong 1)
   (progn 
	(princ (cdr em) fid) 
	(setq xuongdong 2)
	)
)
)
(if (= xuongdong 0)
(progn 
(princ "\n" fid)
(princ (cdr em) fid) 
(princ "\n" fid)
(setq xuongdong 1))
 (if (= xuongdong 1)
   (progn 
	(princ (cdr em) fid) 
	(setq xuongdong 2)
	)
)
)
)
)
(setq kt 1)
    (inra lst2)
 
    (command ".RECTANGLE" diemcuoi diemtren)
    (setq text1 (ssget "C" diemcuoi diemtren (list (cons 0 "text"))))
    (setq lst3 (ss2ent text1 lop2))
    (setq lst3 (mapcar '(lambda (e) (cons (cdr (assoc 10 (entget e))) (cdr (assoc 1 (entget e))))) lst3))
    (setq lst3 (vl-sort lst3 'sosanh))
    (inra lst3)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; xu ly phan tram chay o duoi
(setq pt (* (/ (* dem1 1.0) sodt) 100.0)
dem1 (+ dem1 1)
)
(if (/= pt ptcu)
(progn
(princ (strcat stxoa stxuly (rtos pt 2 0) "%"))
(setq ptcu pt)
)
)
;(princ "\nDang xu ly")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setvar "MODEMACRO" "DANG CHUYEN DU LIEU CHO TRONG GIAY LAT")  
)
  (if fid (close fid))
;(thoi)
)
 
(defun timlt (st / tm)
  (setq tm (vl-string->list (substr (strcase (cdr st)) (+ 3 (vl-string-search "KM" (strcase (cdr st)))))))
  (read (strcat "(" (vl-list->string (subst 32 43 (subst 32 58 tm))) ")"))
)
 
(defun ss2ent (ss lop / sodt index lstent)
  (setq sodt (if ss (sslength ss) 0)
index 0)
  (repeat sodt
    (setq ent (ssname ss index))
    (setq index (1+ index))
    (if (= (cdr (assoc 8 (entget ent))) lop)
      (setq lstent (cons ent lstent))
    )
  )
  (reverse lstent)
)
 

còn đây là file kiểm tra

http://www.cadviet.com/upfiles/4/66960_trac_ngang_in__updte_new_pkdc.dwg


<<

Filename: 328012_xkl.lsp
Tác giả: nhoclangbat
Bài viết gốc: 328098
Tên lệnh: ktd
Cần lisp kiểm tra dim bị edit

- hi ^^, nhoc mới viết sơ bộ bạn test thử xem ^^, bạn có thể quét hết bản vẽ nó chỉ nhận đối tượng là dim, cái nào bị edit nó sẽ chuyển sang màu đỏ, layer dimed.

- nếu bạn thấy ok bạn mún thêm mắm múi cho ngon thì bạn trình bày cụ thể , đưa bản vẽ lun càng tốt, chỉnh sữa sẽ sát theo y/c của bạn ^^

(defun c:ktd (/ ss info dxf1 ename)
(prompt "Quet chon cac...
>>

- hi ^^, nhoc mới viết sơ bộ bạn test thử xem ^^, bạn có thể quét hết bản vẽ nó chỉ nhận đối tượng là dim, cái nào bị edit nó sẽ chuyển sang màu đỏ, layer dimed.

- nếu bạn thấy ok bạn mún thêm mắm múi cho ngon thì bạn trình bày cụ thể , đưa bản vẽ lun càng tốt, chỉnh sữa sẽ sát theo y/c của bạn ^^

(defun c:ktd (/ ss info dxf1 ename)
(prompt "Quet chon cac dim can kiem tra")
(if (setq ss (ssget '((0 .  "DIMENSION"))))
(progn 
 (repeat (sslength ss)
 (setq ename (ssname ss 0))
 (setq info (entget ename))
 (setq dxf1 (cdr (assoc 1 info)))
 (if (/= dxf1 "")
   (entmod (append info (list (cons 62 1) (cons 8 "dimed")) ))
   )
   (ssdel ename ss)
   )
  )
 )
 )

-P/s: có thể phần y/c thêm nhoc ko chỉnh nỗi , bạn thông cảm đợi các anh khác trợ giúp  :P


<<

Filename: 328098_ktd.lsp
Tác giả: nhoclangbat
Bài viết gốc: 328128
Tên lệnh: ktd
Cần lisp kiểm tra dim bị edit

- oh có anh Phung tham gia ^^, nhoc cũng mới sữa xong ^^, bạn xem sao


(defun c:ktd (/ ss info dxf1 ename obj)
(vl-load-com)
(if (null (tblsearch "layer" "dimed")) (K:layer "dimed" 1))
(prompt "Quet chon cac dim can kiem tra")
(if (setq ss (ssget '((0 .  "DIMENSION"))))
(progn 
 (repeat (sslength ss)
 (setq ename (ssname ss 0))
 (setq obj (vlax-ename->vla-object ename))
 (setq info (entget ename))
...
>>

- oh có anh Phung tham gia ^^, nhoc cũng mới sữa xong ^^, bạn xem sao


(defun c:ktd (/ ss info dxf1 ename obj)
(vl-load-com)
(if (null (tblsearch "layer" "dimed")) (K:layer "dimed" 1))
(prompt "Quet chon cac dim can kiem tra")
(if (setq ss (ssget '((0 .  "DIMENSION"))))
(progn 
 (repeat (sslength ss)
 (setq ename (ssname ss 0))
 (setq obj (vlax-ename->vla-object ename))
 (setq info (entget ename))
 (setq dxf1 (cdr (assoc 1 info)))
  (if (/= dxf1 "")
   (progn
     ;(entmod (subst (cons 1 "") (assoc 1 info) info))
	(vla-put-DimensionLinecolor obj "1")
	 (vla-put-TextColor obj "1")
	 (vla-put-ExtensionLinecolor obj "1")
	 (vla-put-layer obj "dimed")
    )
   )
   
   (ssdel ename ss)
   )
  )
 )
 (princ)
 )
(defun K:layer (ten clr)
(if (null (tblsearch "LAYER" ten))
(entmakex (list 
               '(0 . "LAYER")
               '(100 . "AcDbSymbolTableRecord")
               '(100 . "AcDbLayerTableRecord")
			   '(70 . 0)
                (cons 2 ten)
                (cons 62 clr))
)
)
) 

 

-p/s: sau khi nhận thấy các dim bị edit , đổi layer chuyển màu, nó sẽ edit lun về kích thước thật của dim


<<

Filename: 328128_ktd.lsp
Tác giả: pphung183
Bài viết gốc: 328188
Tên lệnh: ktd
Cần lisp kiểm tra dim bị edit

Dùng Vlax cải thiện tốc độ, nếu không có Text override thì khỏi tạo Layer "dimed", chỉ cần Text Dim đổi màu :)

(defun C:KTD( / ss ena obj txt n kq) 
(vl-load-com)
 (setq ss (ssget "X" '((0 . "DIMENSION"))))
(setq n 0)
 (while (setq ena (ssname ss 0)) (setq obj (vlax-ename->vla-object ena))
  (setq txt (cdr (assoc 1 (entget ena))))
(if (not (or (= txt "") (vl-string-search "<>" txt))) 
(progn
(if (not (tblsearch "layer"...
>>

Dùng Vlax cải thiện tốc độ, nếu không có Text override thì khỏi tạo Layer "dimed", chỉ cần Text Dim đổi màu :)

(defun C:KTD( / ss ena obj txt n kq) 
(vl-load-com)
 (setq ss (ssget "X" '((0 . "DIMENSION"))))
(setq n 0)
 (while (setq ena (ssname ss 0)) (setq obj (vlax-ename->vla-object ena))
  (setq txt (cdr (assoc 1 (entget ena))))
(if (not (or (= txt "") (vl-string-search "<>" txt))) 
(progn
(if (not (tblsearch "layer" "Dimed"))
  (vl-cmdf "Layer" "N" "Dimed" "C" "1" "Dimed" ""))
 (vla-put-TextColor obj "1") 
(vla-put-layer obj "dimed")    (setq n (1+ n))
  ))
  (ssdel ena ss)
)
(if (= n 0) (setq kq "Ket qua check: OK")
  (setq kq (strcat "Co " (itoa n) " Dimensions bi sua Text"
           "\nDa duoc chuyen sang layer Dimed co Text mau 1!")
  )
)
(alert kq)
(princ))

 

- oh có anh Phung tham gia ^^, nhoc cũng mới sữa xong ^^, bạn xem sao

Lisp của Nhoc vẫn chưa xét trường hợp Text override có kí tự <> nên sẽ xem loại Dim này đã bị ED luôn :D

<<

Filename: 328188_ktd.lsp
Tác giả: pphung183
Bài viết gốc: 328126
Tên lệnh: ktd
Cần lisp kiểm tra dim bị edit

Thử xem :)

(defun C:KTD( / ss ena txt n kq) 
 (setq ss (ssget "X" '((0 . "DIMENSION"))))
(setq n 0)
(if (not (tblsearch "layer" "Dimed"))
  (vl-cmdf "Layer" "N" "Dimed" "C" "1" "Dimed" "")
)
(while (setq ena (ssname ss 0))
  (setq txt (cdr (assoc 1 (entget ena))))
  (if (not (or (= txt "") (vl-string-search "<>" txt))) (progn
    (vl-cmdf "change" ena "" "p" "LA" "Dimed" "")
(vl-cmdf "._DIMOVERRIDE" "dimclrt" 1 "" ena "" )
    (setq n (1+ n))
  ))
 ...
>>

Thử xem :)

(defun C:KTD( / ss ena txt n kq) 
 (setq ss (ssget "X" '((0 . "DIMENSION"))))
(setq n 0)
(if (not (tblsearch "layer" "Dimed"))
  (vl-cmdf "Layer" "N" "Dimed" "C" "1" "Dimed" "")
)
(while (setq ena (ssname ss 0))
  (setq txt (cdr (assoc 1 (entget ena))))
  (if (not (or (= txt "") (vl-string-search "<>" txt))) (progn
    (vl-cmdf "change" ena "" "p" "LA" "Dimed" "")
(vl-cmdf "._DIMOVERRIDE" "dimclrt" 1 "" ena "" )
    (setq n (1+ n))
  ))
  (ssdel ena ss)
)
(if (= n 0) (setq kq "Ket qua check: OK")
  (setq kq (strcat "Co " (itoa n) " Dimensions bi sua Text"
           "\nda duoc chuyen sang layer Dimed co mau 1!")
  )
)
(alert kq)
(princ))

Test bản vẽ bạn đâu thấy dim nào thay đổi text override <_<


<<

Filename: 328126_ktd.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 328300
Tên lệnh: ti

Trang 186/330

186