Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
matden_304

[Yêu cầu] Lisp kết hợp lệnh Array và Copy

Các bài được khuyến nghị

Doan Van Ha    2.680

Rất cảm ơn Ketxu đã có 1 số góp ý để Lisp được hoàn thiện hơn.

Lệnh này Copy_Array các đối tượng, kể cả Text (Mtext). Riêng Text chứa số thì có thể tăng/giảm theo gia số, nó chấp nhận cả số có tiền và/hoặc hậu tố.

Nếu có nhiều Text số được chọn thì chỉ 1 Text số chọn sau cùng được tăng/giảm. Số chữ số thập phân (nếu có) sẽ lấy theo Text chọn.

; Doan Van Ha CADViet.com
; Copy-Array cac doi tuong ke ca Text (Mtext), rieng Text co chua so thi tang giam theo gia so, chap nhan so co tien to va hau to.
; Neu co nhieu Text chua so duoc chon thi chi 1 Text chon sau cung duoc tang/giam. So chu so thap phan (neu co) lay theo Text chon.
; P/S (01-03-2012): bo sung them so chu so 0 dau num de phu hop voi text mau. VD: "CN: 01" tang thanh "CN: 02"...
(defun C:CA (/ dsdt dt dt1 dt2 p1 p2 sl x kwrd strt strp num sym ds daup giaso)
(vl-load-com)
(command "undo" "be")
(setq osm (getvar "osmode") cmd (getvar "cmdecho"))
(princ "\nChon cac doi tuong can Copy-Array...")
(setq dsdt (vl-remove-if 'listp (mapcar 'cadr (ssnamex (setq dt (ssget)))))
      	dt1 dt p1 (getpoint "\nDiem goc: ") p2 (getpoint p1 "\nDiem den: ") sl (getint "\nSo lan: ") x 1)
(setvar "osmode" 0) (setvar "cmdecho" 0)
(foreach n dsdt
 (if (or (= "TEXT" (cdr (assoc 0 (entget n)))) (= "MTEXT" (cdr (assoc 0 (entget n)))))
  (if (KT_NUM (cdr (assoc 1 (entget n))))
(setq dt2 n))))
(if dt2 (setq dt1 (ssdel dt2 dt)))
(if dt2
 (progn
  (initget "Y N")
  (setq kwrd (getkword "\nBan muon Text tang dan ? [Y/<N>]  ") giaso (getreal "\nGia so: "))
  (setq x 1)
  (repeat (1- sl)
(command ".copy" dt2 "" p1 (polar p1 (angle p1 p2) (* (distance p1 p2) x)))
(if (eq kwrd "Y")
	(progn
 	(CHIA3 (cdr (assoc 1 (entget dt2))))
 	(setq daup (if (not (vl-string-search "." (cadr ds))) 0 (- (strlen (cadr ds)) (vl-string-search "." (cadr ds)) 1)))
 	(entmod (subst (cons 1 (strcat (car ds) (THEM0 (cadr ds) (rtos (+ (atof (cadr ds)) (* x giaso)) 2 daup)) (caddr ds))) (assoc 1 (entget (entlast))) (entget (entlast))))
 	(entupd (entlast))))
(setq x (1+ x)))))
(if dt1
 (progn
  (setq x 1)
  (repeat (1- sl)
(command ".copy" dt1 "" p1 (polar p1 (angle p1 p2) (* (distance p1 p2) x)))
(setq x (1+ x)))))
(command "undo" "e")
(setvar "osmode" osm) (setvar "cmdecho" cmd)
(princ))
;----- Chia text ra tiento_num_hauto.
(defun CHIA3 (str / trai phai lstt lstn)
(setq lstt (vl-string->list str) lstn (reverse lstt))
(while lstt
 (cond ((or (< (car lstt) 48) (> (car lstt) 57)) (setq trai (cons (car lstt) trai) lstt (cdr lstt)))
        	(T (setq lstt nil))))
(while lstn
 (cond ((or (< (car lstn) 48) (> (car lstn) 57)) (setq phai (cons (car lstn) phai) lstn (cdr lstn)))
        	(T (setq lstn nil))))
(setq ds (list (vl-list->string (reverse trai))
                   	(if (= (strlen str) (strlen (vl-list->string (reverse trai)))) "" (vl-string-right-trim (vl-list->string phai) (vl-string-left-trim (vl-list->string trai) str)))
                   	(if (= (strlen str) (strlen (vl-list->string (reverse trai)))) "" (vl-list->string phai)))))
;----- Kiem tra 1 text co chua num hay khong?
(defun KT_NUM(str / ds kt)
(foreach n (vl-string->list str)
 (if (and (>= n 48) (<= n 57)) (setq kt T)))
kt)
;----- Thong ke so chu so truoc dau thap phan.
(defun KT_FIX(str / m)
(setq m 0)
(while (and (> (strlen str) 0) (/= (substr str 1 1) "."))
 (setq m (1+ m) str (substr str 2)))
m)
;----- Them so chu so 0 vao dau text cho phu hop.
(defun THEM0(strt strs)
(while (> (- (KT_FIX strt) (KT_FIX strs)) 0)
 (setq strs (strcat "0" strs)))
strs)

P/S: sửa 07/02/2012 để không còn dùng các hàm Acet.

P/S: sửa 01/03/2012 để thêm số chữ số 0 vào đầu Num của Text để phù hợp với Text gốc.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
tiendung89    8

các bác giúp e sao mà em dùng lisp trên thì khi đánh lệnh CA nó lại báo lỗi như sau

 

 

Command: ca

undo Enter the number of operations to undo or

[Auto/Control/BEgin/End/Mark/Back] <1>: be

Command: ; error: bad argument type: FILE nil

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Doan Van Ha    2.680

các bác giúp e sao mà em dùng lisp trên thì khi đánh lệnh CA nó lại báo lỗi như sau

Command: ca

undo Enter the number of operations to undo or

[Auto/Control/BEgin/End/Mark/Back] <1>: be

Command: ; error: bad argument type: FILE nil

Nếu lỗi ở giữa chương trình thì còn tin được, chứ sao lại lỗi lúc vừa gọi lệnh được nhỉ? Bạn up bản vẽ lên xem sao hè!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Doan Van Ha    2.680

em up bản vẽ lên đây bác xem qua cho em với ạ(ở đây em dùng lisp mà bác mới up đấy ạ- dùng lệnh HA để vẽ)

http://www.cadviet.c..._dia_hinh_1.dwg

Lúc đầu bạn nói dùng lệnh CA, giờ bạn nói dùng lệnh HA (trong topic này không có lệnh HA)?!? Lúc đầu bạn nói lỗi khác, bây giờ bạn gởi bản vẽ thì lỗi khác. Căn cứ trên bản vẽ của bạn thì lỗi là do bạn chưa cài Tool Exprees nên các hàm Acet không hiểu. Tôi đã sửa lại cho bạn ở trên (mục #27, lệnh CA).

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
tiendung89    8

đã đc rồi bác hà ạ

thanks bác

nhân tiện bác cho e hỏi muốn cài Tool Exprees thì làm thế nào ạ? em đang chạy HS nên phải dùng Cad2005

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Doan Van Ha    2.680

đã đc rồi bác hà ạ

thanks bác

nhân tiện bác cho e hỏi muốn cài Tool Exprees thì làm thế nào ạ? em đang chạy HS nên phải dùng Cad2005

Bạn đọc ở đây xem:

http://www.cadviet.com/forum/index.php?showtopic=9949

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
ngotheanh    6

Rất cảm ơn Ketxu đã có 1 số góp ý để Lisp được hoàn thiện hơn.

Lệnh này Copy_Array các đối tượng, kể cả Text (Mtext). Riêng Text chứa số thì có thể tăng/giảm theo gia số, nó chấp nhận cả số có tiền và/hoặc hậu tố.

Nếu có nhiều Text số được chọn thì chỉ 1 Text số chọn sau cùng được tăng/giảm. Số chữ số thập phân (nếu có) sẽ lấy theo Text chọn.

; Doan Van Ha CADViet.com
; Copy-Array cac doi tuong ke ca Text (Mtext), rieng Text co chua so thi tang giam theo gia so, chap nhan so co tien to va hau to.
; Neu co nhieu Text chua so duoc chon thi chi 1 Text chon sau cung duoc tang/giam. So chu so thap phan (neu co) lay theo Text chon.
(defun C:CA (/ dsdt dt dt1 dt2 p1 p2 sl x kwrd strt strp num sym ds daup giaso)
(vl-load-com)
(command "undo" "be")
(setq osm (getvar "osmode") cmd (getvar "cmdecho"))
(princ "\nChon cac doi tuong can Copy-Array...")
(setq dsdt (vl-remove-if 'listp (mapcar 'cadr (ssnamex (setq dt (ssget)))))
  		dt1 dt
  		p1 (getpoint "\nDiem goc: ")
  		p2 (getpoint p1 "\nDiem den: ")
  		sl (getint "\nSo lan: ")
  		x 1)
(setvar "osmode" 0) (setvar "cmdecho" 0)
(foreach n dsdt
 (if (or (= "TEXT" (cdr (assoc 0 (entget n)))) (= "MTEXT" (cdr (assoc 0 (entget n)))))
  (if (KT_NUM (cdr (assoc 1 (entget n))))
(setq dt2 n))))
(if dt2 (setq dt1 (ssdel dt2 dt)))
(if dt2
 (progn
  (initget "Y N")
  (setq kwrd (getkword "\nBan muon Text tang dan ? [Y/<N>]  ") giaso (getreal "\nGia so: "))
  (setq x 1)
  (repeat (1- sl)
(command ".copy" dt2 "" p1 (polar p1 (angle p1 p2) (* (distance p1 p2) x)))
(if (eq kwrd "Y")
(progn
 	(CHIA3 (cdr (assoc 1 (entget dt2))))
 	(setq daup (if (not (vl-string-search "." (cadr ds))) 0 (- (strlen (cadr ds)) (vl-string-search "." (cadr ds)) 1)))
 	(entmod (subst (cons 1 (strcat (car ds) (rtos (+ (atof (cadr ds)) (* x giaso)) 2 daup) (caddr ds)))  (assoc 1 (entget (entlast))) (entget (entlast))))
 	(entupd (entlast))))
(setq x (1+ x)))))
(if dt1
 (progn
  (setq x 1)
  (repeat (1- sl)
(command ".copy" dt1 "" p1 (polar p1 (angle p1 p2) (* (distance p1 p2) x)))
(setq x (1+ x)))))
(command "undo" "e")
(setvar "osmode" osm) (setvar "cmdecho" cmd)
(princ))
;----- Chia text ra tiento_num_hauto.
(defun CHIA3 (str / trai phai lstt lstn)
(setq lstt (vl-string->list str) lstn (reverse lstt))
(while lstt
 (cond ((or (< (car lstt) 48) (> (car lstt) 57)) (setq trai (cons (car lstt) trai) lstt (cdr lstt)))
		(T (setq lstt nil))))
(while lstn
 (cond ((or (< (car lstn) 48) (> (car lstn) 57)) (setq phai (cons (car lstn) phai) lstn (cdr lstn)))
		(T (setq lstn nil))))
(setq ds (list (vl-list->string (reverse trai))
                   	(if (= (strlen str) (strlen (vl-list->string (reverse trai)))) "" (vl-string-right-trim (vl-list->string phai) (vl-string-left-trim (vl-list->string trai) str)))
                   	(if (= (strlen str) (strlen (vl-list->string (reverse trai)))) "" (vl-list->string phai)))))
;----- Kiem tra 1 text co chua num hay khong?
(defun KT_NUM(str / ds kt)
(foreach n (vl-string->list str)
 (if (and (>= n 48) (<= n 57)) (setq kt T)))
kt)

P/S: sửa 07/02/2012 để không còn dùng các hàm Acet.

 

Mình thấy Lisp của bác rất hay, nhưng còn hạn chế ở một chỗ là khi coppy tăng dần text chẳng hạn như CN: 01, khi tăng dần lên 1 đơn vị thì các text sau chỉ còn là CN: 2 CN: 3..... thôi. Mong bác sửa lại sao cho các text sau coppy vẫn là CN: 02, CN: 03 ......

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Doan Van Ha    2.680

Mình thấy Lisp của bác rất hay, nhưng còn hạn chế ở một chỗ là khi coppy tăng dần text chẳng hạn như CN: 01, khi tăng dần lên 1 đơn vị thì các text sau chỉ còn là CN: 2 CN: 3..... thôi. Mong bác sửa lại sao cho các text sau coppy vẫn là CN: 02, CN: 03 ......

Đã sửa cho bạn và mọi người khác cần. Link vẫn như cũ.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Rất cảm ơn Ketxu đã có 1 số góp ý để Lisp được hoàn thiện hơn.

Lệnh này Copy_Array các đối tượng, kể cả Text (Mtext). Riêng Text chứa số thì có thể tăng/giảm theo gia số, nó chấp nhận cả số có tiền và/hoặc hậu tố.

Nếu có nhiều Text số được chọn thì chỉ 1 Text số chọn sau cùng được tăng/giảm. Số chữ số thập phân (nếu có) sẽ lấy theo Text chọn.

; Doan Van Ha CADViet.com
; Copy-Array cac doi tuong ke ca Text (Mtext), rieng Text co chua so thi tang giam theo gia so, chap nhan so co tien to va hau to.
; Neu co nhieu Text chua so duoc chon thi chi 1 Text chon sau cung duoc tang/giam. So chu so thap phan (neu co) lay theo Text chon.
; P/S (01-03-2012): bo sung them so chu so 0 dau num de phu hop voi text mau. VD: "CN: 01" tang thanh "CN: 02"...
(defun C:CA (/ dsdt dt dt1 dt2 p1 p2 sl x kwrd strt strp num sym ds daup giaso)
(vl-load-com)
(command "undo" "be")
(setq osm (getvar "osmode") cmd (getvar "cmdecho"))
(princ "\nChon cac doi tuong can Copy-Array...")
(setq dsdt (vl-remove-if 'listp (mapcar 'cadr (ssnamex (setq dt (ssget)))))
  		dt1 dt p1 (getpoint "\nDiem goc: ") p2 (getpoint p1 "\nDiem den: ") sl (getint "\nSo lan: ") x 1)
(setvar "osmode" 0) (setvar "cmdecho" 0)
(foreach n dsdt
 (if (or (= "TEXT" (cdr (assoc 0 (entget n)))) (= "MTEXT" (cdr (assoc 0 (entget n)))))
  (if (KT_NUM (cdr (assoc 1 (entget n))))
(setq dt2 n))))
(if dt2 (setq dt1 (ssdel dt2 dt)))
(if dt2
 (progn
  (initget "Y N")
  (setq kwrd (getkword "\nBan muon Text tang dan ? [Y/<N>]  ") giaso (getreal "\nGia so: "))
  (setq x 1)
  (repeat (1- sl)
(command ".copy" dt2 "" p1 (polar p1 (angle p1 p2) (* (distance p1 p2) x)))
(if (eq kwrd "Y")
(progn
 	(CHIA3 (cdr (assoc 1 (entget dt2))))
 	(setq daup (if (not (vl-string-search "." (cadr ds))) 0 (- (strlen (cadr ds)) (vl-string-search "." (cadr ds)) 1)))
 	(entmod (subst (cons 1 (strcat (car ds) (THEM0 (cadr ds) (rtos (+ (atof (cadr ds)) (* x giaso)) 2 daup)) (caddr ds))) (assoc 1 (entget (entlast))) (entget (entlast))))
 	(entupd (entlast))))
(setq x (1+ x)))))
(if dt1
 (progn
  (setq x 1)
  (repeat (1- sl)
(command ".copy" dt1 "" p1 (polar p1 (angle p1 p2) (* (distance p1 p2) x)))
(setq x (1+ x)))))
(command "undo" "e")
(setvar "osmode" osm) (setvar "cmdecho" cmd)
(princ))
;----- Chia text ra tiento_num_hauto.
(defun CHIA3 (str / trai phai lstt lstn)
(setq lstt (vl-string->list str) lstn (reverse lstt))
(while lstt
 (cond ((or (< (car lstt) 48) (> (car lstt) 57)) (setq trai (cons (car lstt) trai) lstt (cdr lstt)))
    		(T (setq lstt nil))))
(while lstn
 (cond ((or (< (car lstn) 48) (> (car lstn) 57)) (setq phai (cons (car lstn) phai) lstn (cdr lstn)))
    		(T (setq lstn nil))))
(setq ds (list (vl-list->string (reverse trai))
                   	(if (= (strlen str) (strlen (vl-list->string (reverse trai)))) "" (vl-string-right-trim (vl-list->string phai) (vl-string-left-trim (vl-list->string trai) str)))
                   	(if (= (strlen str) (strlen (vl-list->string (reverse trai)))) "" (vl-list->string phai)))))
;----- Kiem tra 1 text co chua num hay khong?
(defun KT_NUM(str / ds kt)
(foreach n (vl-string->list str)
 (if (and (>= n 48) (<= n 57)) (setq kt T)))
kt)
;----- Thong ke so chu so truoc dau thap phan.
(defun KT_FIX(str / m)
(setq m 0)
(while (and (> (strlen str) 0) (/= (substr str 1 1) "."))
 (setq m (1+ m) str (substr str 2)))
m)
;----- Them so chu so 0 vao dau text cho phu hop.
(defun THEM0(strt strs)
(while (> (- (KT_FIX strt) (KT_FIX strs)) 0)
 (setq strs (strcat "0" strs)))
strs)

P/S: sửa 07/02/2012 để không còn dùng các hàm Acet.

P/S: sửa 01/03/2012 để thêm số chữ số 0 vào đầu Num của Text để phù hợp với Text gốc.

Em chào bác DoanVanHa.

Em down đoạn lisp của bác về sử dụng nhưng lại có một vấn đề là text tăng dần không đúng theo mong muốn của em. Em Post bản vẽ lên mong bác chỉnh sửa lại một chút giúp em cho phù hợp với ạ. Khi sửa bác có thể để mặc định là sẽ copy tăng dần giúp em (không cần hỏi "bạn có muốn copy text tăng dần? nữa). Chi tiết cụ thể em có trình bày trong bản vẽ đính kèm. Mong bác giúp đỡ, Chúc bác cũng như toàn thể anh em Cadviet khỏe mạnh!

http://www.cadviet.com/upfiles/3/110072_reinf_1.dwg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamthanhbinh    3.123

Em chào bác DoanVanHa.

Em down đoạn lisp của bác về sử dụng nhưng lại có một vấn đề là text tăng dần không đúng theo mong muốn của em. Em Post bản vẽ lên mong bác chỉnh sửa lại một chút giúp em cho phù hợp với ạ. Khi sửa bác có thể để mặc định là sẽ copy tăng dần giúp em (không cần hỏi "bạn có muốn copy text tăng dần? nữa). Chi tiết cụ thể em có trình bày trong bản vẽ đính kèm. Mong bác giúp đỡ, Chúc bác cũng như toàn thể anh em Cadviet khỏe mạnh!

http://www.cadviet.c...072_reinf_1.dwg

Hề hề hề,

Mạn phép bác DoanVanHa trả lời bạn nhé.

Lisp bác ha viết không xét trường hợp trong tiền tố và hậu tố lại có lẫn text số như của bạn. Việc mình sửa sau đây cũng chỉ áp dụng được cho trường hợp tiền tố của bạn không chứa hai chữ số liền nhau. Việc giải quyết toàn bộ các trường hợp có thể là một điều không dễ vì người dùng có rất nhiều dạng đặt tiền tố và hậu tố khác nhau. Bởi vậy hãy lưu ý tới việc mình sửa này để bạn có thể tự làm khi thay đổi tiền tố và hậu tố cho phù hợp.

1/- Bạn hãy mở lisp ra tìm tới dòng code sau trong hàm con (chia3 .....)

((or (< (car lstt) 48) (> (car lstt) 57)) (setq trai (cons (car lstt) trai) lstt (cdr lstt)))

Thay nó bằng dòng code :

((or (or (< (car lstt) 48) (> (car lstt) 57)) (or (< (cadr lstt) 48) (> (cadr lstt) 57))) (setq trai (cons (car lstt) trai) lstt (cdr lstt)))

2/- Trong hàm chính bạn tìm tới dòng code:

(setq kwrd (getkword "\nBan muon Text tang dan ? [Y/<N>] ") giaso (getreal "\nGia so: "))

Thay bằng:

(setq giaso (getreal "\nGia so: "))

Đồng thời xóa bỏ dòng code :

(if (eq kwrd "Y")

và một dấu ngoặc đóng ) tại dòng code:

(setq x (1+ x)))))

để thành

(setq x (1+ x))))

Sau đó lưu lại lisp và test thử xem đã dúng ý chưa nhé.

Chúc bạn thành công.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamthanhbinh    3.123

Chào bác phamthanhbinh.

Em thay đoạn code theo gợi ý của bác thì gặp phải trường hợp sau:

số gia đã tăng, nhưng mình nhập số lần vào thì sau khi kết thúc lệnh tất cả các text sau đều nằm trùng nhau Bác xem em thay bị lỗi ở đoạn nào giúp em với ạ. Cảm ơn bác nhiều>

 

 

Hề hề hề,

Sorry, xin lỗi bạn vì mình nhầm chút xíu khi đọc lisp của bác Ha.

Bạn hãy sửa lại, thay vì xóa dấu ngoặc đóng ở dòng

(setq x (1+ x)))))

bạn hãy xóa ngoặc đóng ở dòng code

(entupd (entlast))))

Bạn hãy sửa lại nhé, một lần nữa xin lỗi vì sự cẩu thả, không kiểm tra lại trước khi post bài.

Mong rằng lần sửa này sẽ đáp ứng đúng yêu cầu của bạn.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamthanhbinh    3.123

Các anh ơi giúp em với ạ! Em đã thử lại nhiều lần rồi mà vẫn chưa được.

Hề hề hề,

Bạn đã sửa như mình nói chưa???

nều vậy mà chưa được thì đành chờ bác đoàn van Ha vậy vì mình hết võ rồi.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Hề hề hề,

Bạn đã sửa như mình nói chưa???

nều vậy mà chưa được thì đành chờ bác đoàn van Ha vậy vì mình hết võ rồi.

Chào bác phamthanhbinh.

Em sửa theo cách anh nói thì gặp phải trường hợp là các text sau cứ nằm trùng vị trí của nhau,và số gia chỉ tăng đúng một lần thôi ạ. Ví dụ mình CA một text là A0-0010, khoảng cách là 420, số gia là 10, số lần array là 5 thì 4 text sau chỉ là A0-0020 và nằm trùng nhau hết ở vị trí cách text đầu 420. Em nhờ các bác xem đoạn code em thay nó bị lỗi ở chỗ nào ạ.(Đoạn code em thay ở phía trên ạ)

Em xin cảm ơn nhiều ạ

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamthanhbinh    3.123

Chào bác phamthanhbinh.

Em sửa theo cách anh nói thì gặp phải trường hợp là các text sau cứ nằm trùng vị trí của nhau,và số gia chỉ tăng đúng một lần thôi ạ. Ví dụ mình CA một text là A0-0010, khoảng cách là 420, số gia là 10, số lần array là 5 thì 4 text sau chỉ là A0-0020 và nằm trùng nhau hết ở vị trí cách text đầu 420. Em nhờ các bác xem đoạn code em thay nó bị lỗi ở chỗ nào ạ.(Đoạn code em thay ở phía trên ạ)

Em xin cảm ơn nhiều ạ

Hề hề hề,

Bạn đã làm như mình nói ở bài post số 38 chưa???

Mình sửa như vầy là thấy OK rồi.

Nếu bạn vân chưa thấy Ok thì mình không biết là lỗi chỗ nào nữa. Đành chớ bác DoanVanHa thôi.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Hề hề hề,

Bạn đã làm như mình nói ở bài post số 38 chưa???

Mình sửa như vầy là thấy OK rồi.

Nếu bạn vân chưa thấy Ok thì mình không biết là lỗi chỗ nào nữa. Đành chớ bác DoanVanHa thôi.

Chào bác phamthanhbinh:

Xấu hổ quá.Em thay mãi mà nó vẫn chưa được bác ạ. Lần thành công nhất mà em thay được là em post ở bài số #37 rồi bác ạ. Nếu tiện bác có thể post đoạn bác thay lên và thử thành công cho em xin được không ạ. Em xin cảm ơn bác nhiều ạ!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamthanhbinh    3.123

Chào bác phamthanhbinh:

Xấu hổ quá.Em thay mãi mà nó vẫn chưa được bác ạ. Lần thành công nhất mà em thay được là em post ở bài số #37 rồi bác ạ. Nếu tiện bác có thể post đoạn bác thay lên và thử thành công cho em xin được không ạ. Em xin cảm ơn bác nhiều ạ!

Hề hề hề,

Bạn quá ỷ lại đấy. Những việc đơn giản này mà bạn không muốn làm, chỉ muốn có sẵn là sao nhỉ??? Đọc kỹ những bài mình đã post và sửa đi. Có vậy bạn mới mong có thể hiểu chút chút về lisp mà ứng dụng, chứ còn ngồi chờ như vậy không phải cách của người cần lisp đâu.

Mình đã làm và việc cho bạn chả khó khăn gì, nhưng mình không thích cái sự ỷ lại này. Bạn đã sửa được như bài post số 37 thì không có lý gì không hiểu cái bài post 38 của mình mà chỉ là bạn lười và ỷ lại thôi.

Nếu bạn đã sửa như bài post số 38 của mình mà chưa được thì mới có chuyện để nói, còn nếu bạn không sửa thì mình chịu, không giúp bạn được.

Chúc bạn thành công.

  • Vote giảm 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Hề hề hề,

Bạn quá ỷ lại đấy. Những việc đơn giản này mà bạn không muốn làm, chỉ muốn có sẵn là sao nhỉ??? Đọc kỹ những bài mình đã post và sửa đi. Có vậy bạn mới mong có thể hiểu chút chút về lisp mà ứng dụng, chứ còn ngồi chờ như vậy không phải cách của người cần lisp đâu.

Mình đã làm và việc cho bạn chả khó khăn gì, nhưng mình không thích cái sự ỷ lại này. Bạn đã sửa được như bài post số 37 thì không có lý gì không hiểu cái bài post 38 của mình mà chỉ là bạn lười và ỷ lại thôi.

Nếu bạn đã sửa như bài post số 38 của mình mà chưa được thì mới có chuyện để nói, còn nếu bạn không sửa thì mình chịu, không giúp bạn được.

Chúc bạn thành công.

Chào bác phamthanhbinh.

Trước tiên em cảm ơn bác đã nhiệt tình chỉ bảo, giúp đỡ và trả lời từng thắc mắc của em. Nhưng em có ý kiến thế này.

Em không ỷ lại bác ạ,Oan cho em quá. Em đã thử thay rất nhiều lần mà vẫn không được nên em mới "chai mặt" lên để hỏi lại các bác như thế. Em thử thay bằng Note Pad, Text Pad cả một buổi chiều chưa được nên mới thế thôi ạ. Mỗi lần đọc gợi ý của bác em lại xem lại một lần rồi mới thay nhưng kết quả đều vô vọng.

Đến lúc đọc bài Post số #40 của bác em lại thử thay lại một lần nữa mà vân chưa được (hi). Nhưng thôi,trong khi chờ đợi đến lúc em thay thành công theo gợi ý của bác thì em dùng đoạn lisp cũ (OC_OC_OCA) down trên diễn đàn cũng tốt rồi ạ. Chỉ là em muốn array cho nhanh hơn chút thôi ạ.

Một lần nữa cảm ơn các bác ạ!

Ps: Em chỉ thấy bài post số 36 là bác gợi ý em thay chứ nhỉ. Bài Post số 38 là em Reply lại mà???

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
ketxu    2.653

@quickandfire : bài #38 bạn không thấy do bài trước đó (37) đã bị ẩn kéo theo một loạt bài sau đó. Lý do bị ẩn là bạn post một đoạn code dài mà không buồn cho vào code tag !

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

@quickandfire : bài #38 bạn không thấy do bài trước đó (37) đã bị ẩn kéo theo một loạt bài sau đó. Lý do bị ẩn là bạn post một đoạn code dài mà không buồn cho vào code tag !

Cảm ơn anh Ket đã thông báo cho em biết lý do. Không biết có phải lúc đó do Internet chỗ em chập chờn hay thế nào mà lại bị thế chứ em không cố ý làm thế đâu ạ. Vậy bây giờ làm thế nào để em thấy lại được bài số 38 mà anh phamthanhbinh đã post ạ?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamthanhbinh    3.123

Chào bác phamthanhbinh.

Trước tiên em cảm ơn bác đã nhiệt tình chỉ bảo, giúp đỡ và trả lời từng thắc mắc của em. Nhưng em có ý kiến thế này.

Em không ỷ lại bác ạ,Oan cho em quá. Em đã thử thay rất nhiều lần mà vẫn không được nên em mới "chai mặt" lên để hỏi lại các bác như thế. Em thử thay bằng Note Pad, Text Pad cả một buổi chiều chưa được nên mới thế thôi ạ. Mỗi lần đọc gợi ý của bác em lại xem lại một lần rồi mới thay nhưng kết quả đều vô vọng.

Đến lúc đọc bài Post số #40 của bác em lại thử thay lại một lần nữa mà vân chưa được (hi). Nhưng thôi,trong khi chờ đợi đến lúc em thay thành công theo gợi ý của bác thì em dùng đoạn lisp cũ (OC_OC_OCA) down trên diễn đàn cũng tốt rồi ạ. Chỉ là em muốn array cho nhanh hơn chút thôi ạ.

Một lần nữa cảm ơn các bác ạ!

Ps: Em chỉ thấy bài post số 36 là bác gợi ý em thay chứ nhỉ. Bài Post số 38 là em Reply lại mà???

Sorry bạn vì đã nghĩ oan cho bạn. Do mình vẫn đọc được bài post,(mặc dù thấy nó bị đổi màu mà chửa biết tại sao) nên cứ tưởng bạn cũng đọc được.

Vậy thì đền cho bạn nhé.

Đoạn code đó đây:


(if dt2
 (progn
  (initget "Y N")
  (setq ;;;;kwrd (getkword "\nBan muon Text tang dan ? [Y/<N>]  ")
              giaso (getreal "\nGia so: "))
  (setq x 1)
  (repeat (1- sl)
        (command ".copy" dt2 "" p1 (polar p1 (angle p1 p2) (* (distance p1 p2) x)))
        ;;;;(if (eq kwrd "Y")
            (progn
  (CHIA3 (cdr (assoc 1 (entget dt2))))
  (setq daup (if (not (vl-string-search "." (cadr ds)))
                                        0
                                        (- (strlen (cadr ds)) (vl-string-search "." (cadr ds)) 1)
                                     )
                 )
                 (entmod (subst (cons 1 (strcat (car ds) (THEM0 (cadr ds) (rtos (+ (atof (cadr ds)) (* x giaso)) 2 daup)) (caddr ds))) 
                                            (assoc 1 (entget (entlast))) (entget (entlast)))
                 )
                 (entupd (entlast))
            )
         ;;;;)
         (setq x (1+ x))
  )
)
)

Hề hề hề, một lần nữa xin lỗi bạn và mong bạn lần sau rút kinh nghiệm kẻo lại bị các mode cho treo bài nữa thì thiệt thòi lắm lắm.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Sorry bạn vì đã nghĩ oan cho bạn. Do mình vẫn đọc được bài post,(mặc dù thấy nó bị đổi màu mà chửa biết tại sao) nên cứ tưởng bạn cũng đọc được.

Vậy thì đền cho bạn nhé.

Đoạn code đó đây:


(if dt2
 (progn
  (initget "Y N")
  (setq ;;;;kwrd (getkword "\nBan muon Text tang dan ? [Y/<N>]  ")
          	giaso (getreal "\nGia so: "))
  (setq x 1)
  (repeat (1- sl)
    	(command ".copy" dt2 "" p1 (polar p1 (angle p1 p2) (* (distance p1 p2) x)))
    	;;;;(if (eq kwrd "Y")
        	(progn
  (CHIA3 (cdr (assoc 1 (entget dt2))))
  (setq daup (if (not (vl-string-search "." (cadr ds)))
                                    	0
                                    	(- (strlen (cadr ds)) (vl-string-search "." (cadr ds)) 1)
                                     )
                 )
                 (entmod (subst (cons 1 (strcat (car ds) (THEM0 (cadr ds) (rtos (+ (atof (cadr ds)) (* x giaso)) 2 daup)) (caddr ds)))
                                        	(assoc 1 (entget (entlast))) (entget (entlast)))
                 )
                 (entupd (entlast))
        	)
         ;;;;)
         (setq x (1+ x))
  )
)
)

Hề hề hề, một lần nữa xin lỗi bạn và mong bạn lần sau rút kinh nghiệm kẻo lại bị các mode cho treo bài nữa thì thiệt thòi lắm lắm.

Không sao bác ạ. Bác cũng đâu có biết sự thể như vậy đâu.Em thay được đoạn code đó và lisp chạy được là em mừng lắm rồi!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

Đăng nhập để thực hiện theo  

×