Đến nội dung


Hình ảnh
- - - - -

[Nhờ chỉnh sửa] Lưu giữ thông số nhập vào trong lisp


  • Please log in to reply
9 replies to this topic

#1 bach1212

bach1212

    biết lệnh trim

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

Đã gửi 10 October 2013 - 09:28 AM

Cho mình hỏi, trong lisp này, muốn lưu giữ thông số: khoảng cách "d" giữa các text và bên căn chỉnh text trái hay phải "T or P" cho các lần thực hiện lisp tiếp sau thì cần chỉnh sửa như thế nào để không phải gõ lại ạ:

http://www.cadviet.c...an_text__dk.lsp

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=57792&st=20
 
;;;;;;Sap xep cac text dung theo khoang cach ngang nhap vao. Co hai lua chon: sap xep tu trai qua phai va nguoc lai
 
 
(defun c:dk (/ oldos p d enlst i ht cn cd ort)
(vl-load-com)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq ;;;;; p (getpoint "\n Chon diem chuan ")
        d (getreal "\n Nhap khoang cach giua cac text: ") )
(setq ort (getstring "\n Text co dinh nam ben Trai hay Phai <T or P>: "))
(prompt "\n Chon nhom text can sap xep")
(setq  enlst (acet-ss-to-list (ssget (list (cons 0 "text") ))))
(while enlst
   	(command "undo" "be")
   	(setq i 0)
   	(setq enlst (vl-sort enlst '(lambda (x y) (< (caar (acet-ent-geomextents x)) (caar (acet-ent-geomextents y))))))
   	(if (= (strcase ort) "T")
   	(setq p (if (or (/= (cdr (assoc 72 (entget (car enlst)))) 0) (/= (cdr (assoc 73 (entget (car enlst)))) 0))
                        (cdr (assoc 11 (entget (car enlst)))) (cdr (assoc 10 (entget (car enlst))))  )
       		cn (cdr (assoc 72 (entget (car enlst))))
       		cd (cdr (assoc 73 (entget (car enlst))))
   	)
   	(setq p (if (or (/= (cdr (assoc 72 (entget (last enlst)))) 0) (/= (cdr (assoc 73 (entget (last enlst)))) 0))
                        (cdr (assoc 11 (entget (last enlst)))) (cdr (assoc 10 (entget (last enlst))))  )
       		cn (cdr (assoc 72 (entget (last enlst))))
       		cd (cdr (assoc 73 (entget (last enlst))))
               enlst (reverse enlst)
   	)
   	)
   	(foreach en enlst
            (setq encode (entget en)
                    ht (cdr (assoc 40 encode))                  
                    encode (subst (cons 72 cn) (assoc 72 encode) encode)
                    encode (subst (cons 73 cd) (assoc 73 encode) encode)                  
     		)
     		(if (= (strcase ort) "T")
         		(setq  encode (subst (cons 11 (list (+ (car p)  (* i (+ d ht))) (caddr (assoc 11 encode)))) (assoc 11 encode) encode))
         		(setq  encode (subst (cons 11 (list (- (car p)  (* i (+ d ht))) (caddr (assoc 11 encode)))) (assoc 11 encode) encode))
     		)
     		(entmod encode)
     		(setq  i (1+ i))
        )
   	;;; (setq ans (getstring "\n Ban muon tiep tuc chinh text <Y or N> : "))
   	;;; (if (= (strcase ans) "Y")
   	;;; 	(progn
         		(prompt "\n Hay chon nhom text can sap xep tiep theo")
         		(setq enlst (acet-ss-to-list (ssget (list (cons 0 "text")))))
   	;;; 	)
   	;;; 	(setq enlst nil)
   	;;; )
        (command "undo" "e")
)
(setvar "osmode" oldos)
 
(princ)
)            


 


 


  • 0

Một môn tập luyện mang lại vô vàn lợi ích sức khỏe cho mọi người, nhiều bệnh tật nan y đều được chữa khỏi, hoàn toàn miễn phí. Hiệu quả chữa khỏi bệnh tật của nó lên đến hơn 90%.
Tài liệu tại đây: http://phapluan.org/

Rất vui được làm quen với mọi người trên facebook:
https://www.facebook...67946371&type=1

 

 


#2 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 10 October 2013 - 04:04 PM

Cho mình hỏi, trong lisp này, muốn lưu giữ thông số: khoảng cách "d" giữa các text và bên căn chỉnh text trái hay phải "T or P" cho các lần thực hiện lisp tiếp sau thì cần chỉnh sửa như thế nào để không phải gõ lại ạ:

http://www.cadviet.c...an_text__dk.lsp

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=57792&st=20
 
;;;;;;Sap xep cac text dung theo khoang cach ngang nhap vao. Co hai lua chon: sap xep tu trai qua phai va nguoc lai
 
 
(defun c:dk (/ oldos p d enlst i ht cn cd ort)
(vl-load-com)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq ;;;;; p (getpoint "\n Chon diem chuan ")
        d (getreal "\n Nhap khoang cach giua cac text: ") )
(setq ort (getstring "\n Text co dinh nam ben Trai hay Phai <T or P>: "))
(prompt "\n Chon nhom text can sap xep")
(setq  enlst (acet-ss-to-list (ssget (list (cons 0 "text") ))))
(while enlst
   	(command "undo" "be")
   	(setq i 0)
   	(setq enlst (vl-sort enlst '(lambda (x y) (< (caar (acet-ent-geomextents x)) (caar (acet-ent-geomextents y))))))
   	(if (= (strcase ort) "T")
   	(setq p (if (or (/= (cdr (assoc 72 (entget (car enlst)))) 0) (/= (cdr (assoc 73 (entget (car enlst)))) 0))
                        (cdr (assoc 11 (entget (car enlst)))) (cdr (assoc 10 (entget (car enlst))))  )
       		cn (cdr (assoc 72 (entget (car enlst))))
       		cd (cdr (assoc 73 (entget (car enlst))))
   	)
   	(setq p (if (or (/= (cdr (assoc 72 (entget (last enlst)))) 0) (/= (cdr (assoc 73 (entget (last enlst)))) 0))
                        (cdr (assoc 11 (entget (last enlst)))) (cdr (assoc 10 (entget (last enlst))))  )
       		cn (cdr (assoc 72 (entget (last enlst))))
       		cd (cdr (assoc 73 (entget (last enlst))))
               enlst (reverse enlst)
   	)
   	)
   	(foreach en enlst
            (setq encode (entget en)
                    ht (cdr (assoc 40 encode))                  
                    encode (subst (cons 72 cn) (assoc 72 encode) encode)
                    encode (subst (cons 73 cd) (assoc 73 encode) encode)                  
     		)
     		(if (= (strcase ort) "T")
         		(setq  encode (subst (cons 11 (list (+ (car p)  (* i (+ d ht))) (caddr (assoc 11 encode)))) (assoc 11 encode) encode))
         		(setq  encode (subst (cons 11 (list (- (car p)  (* i (+ d ht))) (caddr (assoc 11 encode)))) (assoc 11 encode) encode))
     		)
     		(entmod encode)
     		(setq  i (1+ i))
        )
   	;;; (setq ans (getstring "\n Ban muon tiep tuc chinh text <Y or N> : "))
   	;;; (if (= (strcase ans) "Y")
   	;;; 	(progn
         		(prompt "\n Hay chon nhom text can sap xep tiep theo")
         		(setq enlst (acet-ss-to-list (ssget (list (cons 0 "text")))))
   	;;; 	)
   	;;; 	(setq enlst nil)
   	;;; )
        (command "undo" "e")
)
(setvar "osmode" oldos)
 
(princ)
)            


 


 

Hề hề hề,

Hãy thử làm như sau:

1/- Xóa bỏ các biến d và ort khỏi danh sách các biến cục bộ được liệt kê ở đầu lisp.

2/- Bổ sung (if (not d) và trước dòng code (setq d ....) rồi thêm một ngoặc đóng vào cuối dòng code này/

3/- Làm như 2 đối với dòng code (setq ort ....)


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

#3 bach1212

bach1212

    biết lệnh trim

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

Đã gửi 11 October 2013 - 08:59 AM

hề hề, cám ơn bác phamthanhbinh. Làm như bác hướng dẫn, các lần sau đã ko cần nhập lại khoảng cách "d" và bên trái hay phải nữa.

Tuy nhiên, nếu cần phải thay đổi lại thông số nhập vào thì sao ạ?

E mún là nó chỉ lưu giữ thông số nhập vào, vẫn hiện lên dòng nhắc.( Để nếu có chỉnh sửa thì nhập lại thông số đầu vào). Theo hướng dẫn của bác thì hiện tại là đang mất hẳn dòng nhắc rùi ự.

http://www.cadviet.c..._text__dk_1.lsp

Bản vẽ để bác check giùm ạ:

http://www.cadviet.c...0304_in_tdn.rar


  • 0

Một môn tập luyện mang lại vô vàn lợi ích sức khỏe cho mọi người, nhiều bệnh tật nan y đều được chữa khỏi, hoàn toàn miễn phí. Hiệu quả chữa khỏi bệnh tật của nó lên đến hơn 90%.
Tài liệu tại đây: http://phapluan.org/

Rất vui được làm quen với mọi người trên facebook:
https://www.facebook...67946371&type=1

 

 


#4 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 11 October 2013 - 11:11 AM

hề hề, cám ơn bác phamthanhbinh. Làm như bác hướng dẫn, các lần sau đã ko cần nhập lại khoảng cách "d" và bên trái hay phải nữa.

Tuy nhiên, nếu cần phải thay đổi lại thông số nhập vào thì sao ạ?

E mún là nó chỉ lưu giữ thông số nhập vào, vẫn hiện lên dòng nhắc.( Để nếu có chỉnh sửa thì nhập lại thông số đầu vào). Theo hướng dẫn của bác thì hiện tại là đang mất hẳn dòng nhắc rùi ự.

http://www.cadviet.c..._text__dk_1.lsp

Bản vẽ để bác check giùm ạ:

http://www.cadviet.c...0304_in_tdn.rar

Hề hề hề,'

Nếu muốn vậy hãy đặt thêm biếp phụ.

(setq d1 (getreal "\n ....))

(if d1 (setq d d1))

Tương tự với biến ort nhưng lưu ý giá trị trả về của hàm (gestring ....) khác với hàm (getreal ...) khi nhấn enter mà không nhập dữ liệu gì.


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

#5 bach1212

bach1212

    biết lệnh trim

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

Đã gửi 11 October 2013 - 01:39 PM

lưu giữ được giá trị d, nhưng ko lưu được bên trái hay phải bác ạ. (lặp lại lisp thì nó nhận luôn là "P")

dòng nhắc không ghi được giá trị cũ.

VD: trước đó điền d = 0.2. thì lặp lại lệnh dòng nhắc cần ghi: Nhap khoang cach giua cac text: <0.2> ......

trước đó nhập "T" thì lặp lại lệnh dòng nhắc cần ghi: Text co dinh nam ben Trai hay Phai <T or P> <T>
 


  • 0

Một môn tập luyện mang lại vô vàn lợi ích sức khỏe cho mọi người, nhiều bệnh tật nan y đều được chữa khỏi, hoàn toàn miễn phí. Hiệu quả chữa khỏi bệnh tật của nó lên đến hơn 90%.
Tài liệu tại đây: http://phapluan.org/

Rất vui được làm quen với mọi người trên facebook:
https://www.facebook...67946371&type=1

 

 


#6 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 11 October 2013 - 03:43 PM

lưu giữ được giá trị d, nhưng ko lưu được bên trái hay phải bác ạ. (lặp lại lisp thì nó nhận luôn là "P")
dòng nhắc không ghi được giá trị cũ.
VD: trước đó điền d = 0.2. thì lặp lại lệnh dòng nhắc cần ghi: Nhap khoang cach giua cac text: <0.2> ......
trước đó nhập "T" thì lặp lại lệnh dòng nhắc cần ghi: Text co dinh nam ben Trai hay Phai <T or P> <T>
 

Hề hề hề,
lưu ý giá trị trả về của hàm (gestring ....) khác với hàm (getreal ...) khi nhấn enter 

Do hàm (getstring ...) trả về một chuỗi "" khi không nhập gì trên dòng command chứ không phải là nil.
Vì vậy nếu như bạn muốn cần làm như sau:

(setq d1 (getreal (strcat "\n Nhap khoang cach giua cac text <" (rtos d 2 2) ">: ")))
(if d1 (setq d d1))

(setq ort1 (getstring (strcat "\n Text co dinh nam ben Trai hay ben Phai <T or P> <" (strcase ort) ">: ")))
(if (= ort1 "T") (setq ort ort1)(setq ort "P"))
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#7 bach1212

bach1212

    biết lệnh trim

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

Đã gửi 12 October 2013 - 08:19 AM

oa oa oa. phần biến thì đặt như nào bạn nhỉ?

thay rồi sao lisp không chạy? :D

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.c...pic=57792&st=20
 
;;;;;;Sap xep cac text dung theo khoang cach ngang nhap vao. Co hai lua chon: sap xep tu trai qua phai va nguoc lai
 
 
(defun c:dk (/ oldos p d1 enlst i ht cn cd ort1)
(vl-load-com)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)

(setq d1 (getreal (strcat "\n Nhap khoang cach giua cac text <" (rtos d 2 2) ">: ")))
(if d1 (setq d d1))

(setq ort1 (getstring (strcat "\n Text co dinh nam ben Trai hay ben Phai <T or P> <" (strcase ort) ">: ")))
(if (= ort1 "T") (setq ort ort1)(setq ort "P")) 



;;;(setq ;;;;; p (getpoint "\n Chon diem chuan ")
        d (getreal "\n Nhap khoang cach giua cac text: ") )
;;;;(setq ort (getstring "\n Text co dinh nam ben Trai hay Phai <T or P>: "))


(prompt "\n Chon nhom text can sap xep")
(setq  enlst (acet-ss-to-list (ssget (list (cons 0 "text") ))))
(while enlst
   	(command "undo" "be")
   	(setq i 0)
   	(setq enlst (vl-sort enlst '(lambda (x y) (< (caar (acet-ent-geomextents x)) (caar (acet-ent-geomextents y))))))
   	(if (= (strcase ort) "T")
   	(setq p (if (or (/= (cdr (assoc 72 (entget (car enlst)))) 0) (/= (cdr (assoc 73 (entget (car enlst)))) 0))
                        (cdr (assoc 11 (entget (car enlst)))) (cdr (assoc 10 (entget (car enlst))))  )
       		cn (cdr (assoc 72 (entget (car enlst))))
       		cd (cdr (assoc 73 (entget (car enlst))))
   	)
   	(setq p (if (or (/= (cdr (assoc 72 (entget (last enlst)))) 0) (/= (cdr (assoc 73 (entget (last enlst)))) 0))
                        (cdr (assoc 11 (entget (last enlst)))) (cdr (assoc 10 (entget (last enlst))))  )
       		cn (cdr (assoc 72 (entget (last enlst))))
       		cd (cdr (assoc 73 (entget (last enlst))))
               enlst (reverse enlst)
   	)
   	)
   	(foreach en enlst
            (setq encode (entget en)
                    ht (cdr (assoc 40 encode))                  
                    encode (subst (cons 72 cn) (assoc 72 encode) encode)
                    encode (subst (cons 73 cd) (assoc 73 encode) encode)                  
     		)
     		(if (= (strcase ort) "T")
         		(setq  encode (subst (cons 11 (list (+ (car p)  (* i (+ d ht))) (caddr (assoc 11 encode)))) (assoc 11 encode) encode))
         		(setq  encode (subst (cons 11 (list (- (car p)  (* i (+ d ht))) (caddr (assoc 11 encode)))) (assoc 11 encode) encode))
     		)
     		(entmod encode)
     		(setq  i (1+ i))
        )
   	;;; (setq ans (getstring "\n Ban muon tiep tuc chinh text <Y or N> : "))
   	;;; (if (= (strcase ans) "Y")
   	;;; 	(progn
         		(prompt "\n Hay chon nhom text can sap xep tiep theo")
         		(setq enlst (acet-ss-to-list (ssget (list (cons 0 "text")))))
   	;;; 	)
   	;;; 	(setq enlst nil)
   	;;; )
        (command "undo" "e")
)
(setvar "osmode" oldos)
 
(princ)
)            



  • 0

Một môn tập luyện mang lại vô vàn lợi ích sức khỏe cho mọi người, nhiều bệnh tật nan y đều được chữa khỏi, hoàn toàn miễn phí. Hiệu quả chữa khỏi bệnh tật của nó lên đến hơn 90%.
Tài liệu tại đây: http://phapluan.org/

Rất vui được làm quen với mọi người trên facebook:
https://www.facebook...67946371&type=1

 

 


#8 bach1212

bach1212

    biết lệnh trim

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

Đã gửi 12 October 2013 - 09:59 AM

mình muốn nó lưu giữ thông số như dạng của lisp này bạn ạ:

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.c...=0
 
(defun c:ths (/ Ename Elist Msg Oldtext Oldlist Newtext Newlist)
(command "undo" "be")
(setq donvi (/ (getvar "viewsize") 40))
(setq ddd (entsel "\nChon text bi tru"))
(while
 (or
   (null ddd)
   (/= "TEXT" (cdr (assoc 0 (entget (car ddd)))))
)
(princ "\nDoi tuong khong phai la text! Chon lai")
(setq ddd (entsel "\nChon text bi tru"))
)

  (setq DTDTT (car ddd))
  (setq DTTT (entget DTDTT))
  (setq NDTTT (cdr (assoc 1 DTTT)))
  (setq NDTTT (atof NDTTT))
  (setq DIEMVIETTEXT (cdr (assoc 10 DTTT)))
(setq diemvt1 (polar DIEMVIETTEXT pi donvi))
(setq diemvt2 (polar DIEMVIETTEXT (* 2 pi) donvi))
(setq diemvt3 (polar DIEMVIETTEXT (/ pi 2) donvi))
(setq diemvt4 (polar DIEMVIETTEXT (- 0 (/ pi 2)) donvi))
        	(grdraw diemvt1 diemvt2 3)
        	(grdraw diemvt3 diemvt4 3)
(if (= droffln nil)
(setq droffln1 2.00)
(setq droffln1 droffln)
)
(setq
droffln (GETdist (strcat "\nNhap hang so tru: <" (rtos droffln1 2 2) ">")) 
)
(if (= droffln nil)
(setq droffln droffln1)
)

(setq ketquaxuat (- NDTTT droffln))
(setq ketquaxuat (rtos ketquaxuat 2 2))
(setq dddsn (entsel "\nChon text xuat ket qua"))
(while
 (or
   (null dddsn)
   (/= "TEXT" (cdr (assoc 0 (entget (car dddsn)))))
)
(princ "\nDoi tuong khong phai la text! Chon lai")
(setq dddsn (entsel "\nChon text tru"))
)

       	(setq DTDTTsn (car dddsn))
       	(setq DTMs (entget DTDTTsn))
       	(setq DTMs (subst (cons 1 ketquaxuat) (assoc 1 DTMs) DTMs))
       	(entmod DTMs)

(command "undo" "end")
  	(Princ))
 



  • 0

Một môn tập luyện mang lại vô vàn lợi ích sức khỏe cho mọi người, nhiều bệnh tật nan y đều được chữa khỏi, hoàn toàn miễn phí. Hiệu quả chữa khỏi bệnh tật của nó lên đến hơn 90%.
Tài liệu tại đây: http://phapluan.org/

Rất vui được làm quen với mọi người trên facebook:
https://www.facebook...67946371&type=1

 

 


#9 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 12 October 2013 - 12:17 PM

oa oa oa. phần biến thì đặt như nào bạn nhỉ?

thay rồi sao lisp không chạy? :D

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.c...pic=57792&st=20
 
;;;;;;Sap xep cac text dung theo khoang cach ngang nhap vao. Co hai lua chon: sap xep tu trai qua phai va nguoc lai
 
 
(defun c:dk (/ oldos p d1 enlst i ht cn cd ort1)
(vl-load-com)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)

(setq d1 (getreal (strcat "\n Nhap khoang cach giua cac text <" (rtos d 2 2) ">: ")))
(if d1 (setq d d1))

(setq ort1 (getstring (strcat "\n Text co dinh nam ben Trai hay ben Phai <T or P> <" (strcase ort) ">: ")))
(if (= ort1 "T") (setq ort ort1)(setq ort "P")) 



;;;(setq ;;;;; p (getpoint "\n Chon diem chuan ")
        d (getreal "\n Nhap khoang cach giua cac text: ") )
;;;;(setq ort (getstring "\n Text co dinh nam ben Trai hay Phai <T or P>: "))


(prompt "\n Chon nhom text can sap xep")
(setq  enlst (acet-ss-to-list (ssget (list (cons 0 "text") ))))
(while enlst
   	(command "undo" "be")
   	(setq i 0)
   	(setq enlst (vl-sort enlst '(lambda (x y) (< (caar (acet-ent-geomextents x)) (caar (acet-ent-geomextents y))))))
   	(if (= (strcase ort) "T")
   	(setq p (if (or (/= (cdr (assoc 72 (entget (car enlst)))) 0) (/= (cdr (assoc 73 (entget (car enlst)))) 0))
                        (cdr (assoc 11 (entget (car enlst)))) (cdr (assoc 10 (entget (car enlst))))  )
       		cn (cdr (assoc 72 (entget (car enlst))))
       		cd (cdr (assoc 73 (entget (car enlst))))
   	)
   	(setq p (if (or (/= (cdr (assoc 72 (entget (last enlst)))) 0) (/= (cdr (assoc 73 (entget (last enlst)))) 0))
                        (cdr (assoc 11 (entget (last enlst)))) (cdr (assoc 10 (entget (last enlst))))  )
       		cn (cdr (assoc 72 (entget (last enlst))))
       		cd (cdr (assoc 73 (entget (last enlst))))
               enlst (reverse enlst)
   	)
   	)
   	(foreach en enlst
            (setq encode (entget en)
                    ht (cdr (assoc 40 encode))                  
                    encode (subst (cons 72 cn) (assoc 72 encode) encode)
                    encode (subst (cons 73 cd) (assoc 73 encode) encode)                  
     		)
     		(if (= (strcase ort) "T")
         		(setq  encode (subst (cons 11 (list (+ (car p)  (* i (+ d ht))) (caddr (assoc 11 encode)))) (assoc 11 encode) encode))
         		(setq  encode (subst (cons 11 (list (- (car p)  (* i (+ d ht))) (caddr (assoc 11 encode)))) (assoc 11 encode) encode))
     		)
     		(entmod encode)
     		(setq  i (1+ i))
        )
   	;;; (setq ans (getstring "\n Ban muon tiep tuc chinh text <Y or N> : "))
   	;;; (if (= (strcase ans) "Y")
   	;;; 	(progn
         		(prompt "\n Hay chon nhom text can sap xep tiep theo")
         		(setq enlst (acet-ss-to-list (ssget (list (cons 0 "text")))))
   	;;; 	)
   	;;; 	(setq enlst nil)
   	;;; )
        (command "undo" "e")
)
(setvar "osmode" oldos)
 
(princ)
)            


Hề hề hề,

Có hai lỗi làm lisp không chạy:

1/ Bạn còn để lại dòng code:

d (getreal "\n Nhap khoang cach giua cac text: ") )

Chưa bị vô hiệu hoá.

2/- Code mình gửi bạn chưa đầy đủ, bị thiếu giá trị trả về khi điều kiện check không thoả của hàm if nên lisp không hiểu.

 

Vậy nên mình đã sửa và check lại như sau thì nó chạy bon bon. Sorry vì chủ quan không check code trước khi post bài.

 

(setq d1 (getreal (strcat "\n Nhap khoang cach giua cac text <" (if (/= d nil) (rtos d 2 2) "") ">: ")))

(if d1 (setq d d1))

 

(setq ort1 (getstring (strcat "\n Text co dinh nam ben Trai hay ben Phai <T or P> <" (if (/= ort nil) (strcase ort) "") ">: ")))

(if (/= ort1 "") (setq ort ort1) (setq ort1 ort) )


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

#10 bach1212

bach1212

    biết lệnh trim

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

Đã gửi 12 October 2013 - 04:09 PM

hí hí, ngon roài. thanks phamthanhbinh.

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.c...pic=57792&st=20
 
;;;;;;Sap xep cac text dung theo khoang cach ngang nhap vao. Co hai lua chon: sap xep tu trai qua phai va nguoc lai
 
 
(defun c:dk (/ oldos p d1 enlst i ht cn cd ort1)
(vl-load-com)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq d1 (getreal (strcat "\n Nhap khoang cach giua cac text <" (if (/= d nil) (rtos d 2 2) "") ">: ")))
(if d1 (setq d d1)) 
(setq ort1 (getstring (strcat "\n Text co dinh nam ben Trai hay ben Phai <T or P> <" (if (/= ort nil) (strcase ort) "") ">: ")))
(if (/= ort1 "") (setq ort ort1) (setq ort1 ort) )
(prompt "\n Chon nhom text can sap xep")
(setq  enlst (acet-ss-to-list (ssget (list (cons 0 "text") ))))
(while enlst
   	(command "undo" "be")
   	(setq i 0)
   	(setq enlst (vl-sort enlst '(lambda (x y) (< (caar (acet-ent-geomextents x)) (caar (acet-ent-geomextents y))))))
   	(if (= (strcase ort) "T")
   	(setq p (if (or (/= (cdr (assoc 72 (entget (car enlst)))) 0) (/= (cdr (assoc 73 (entget (car enlst)))) 0))
                        (cdr (assoc 11 (entget (car enlst)))) (cdr (assoc 10 (entget (car enlst))))  )
       		cn (cdr (assoc 72 (entget (car enlst))))
       		cd (cdr (assoc 73 (entget (car enlst))))
   	)
   	(setq p (if (or (/= (cdr (assoc 72 (entget (last enlst)))) 0) (/= (cdr (assoc 73 (entget (last enlst)))) 0))
                        (cdr (assoc 11 (entget (last enlst)))) (cdr (assoc 10 (entget (last enlst))))  )
       		cn (cdr (assoc 72 (entget (last enlst))))
       		cd (cdr (assoc 73 (entget (last enlst))))
               enlst (reverse enlst)
   	)
   	)
   	(foreach en enlst
            (setq encode (entget en)
                    ht (cdr (assoc 40 encode))                  
                    encode (subst (cons 72 cn) (assoc 72 encode) encode)
                    encode (subst (cons 73 cd) (assoc 73 encode) encode)                  
     		)
     		(if (= (strcase ort) "T")
         		(setq  encode (subst (cons 11 (list (+ (car p)  (* i (+ d ht))) (caddr (assoc 11 encode)))) (assoc 11 encode) encode))
         		(setq  encode (subst (cons 11 (list (- (car p)  (* i (+ d ht))) (caddr (assoc 11 encode)))) (assoc 11 encode) encode))
     		)
     		(entmod encode)
     		(setq  i (1+ i))
        )
   	;;; (setq ans (getstring "\n Ban muon tiep tuc chinh text <Y or N> : "))
   	;;; (if (= (strcase ans) "Y")
   	;;; 	(progn
         		(prompt "\n Hay chon nhom text can sap xep tiep theo")
         		(setq enlst (acet-ss-to-list (ssget (list (cons 0 "text")))))
   	;;; 	)
   	;;; 	(setq enlst nil)
   	;;; )
        (command "undo" "e")
)
(setvar "osmode" oldos)
 
(princ)
)            



  • 0

Một môn tập luyện mang lại vô vàn lợi ích sức khỏe cho mọi người, nhiều bệnh tật nan y đều được chữa khỏi, hoàn toàn miễn phí. Hiệu quả chữa khỏi bệnh tật của nó lên đến hơn 90%.
Tài liệu tại đây: http://phapluan.org/

Rất vui được làm quen với mọi người trên facebook:
https://www.facebook...67946371&type=1