Đến nội dung


Hình ảnh
- - - - -

Nhờ Sửa Lsp Giúp


  • Please log in to reply
28 replies to this topic

#1 thainguyen_tg

thainguyen_tg

    biết vẽ circle

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

Đã gửi 16 August 2016 - 08:42 PM

Chào các bạn trên diễn đàn cadviet.com!

Mình có sưu tầm được 1 lisp trên diễn đàn (không nhớ rõ tên tác giả) dùng để sửa đối tượng text tăng dần. Tuy nhiên lisp này còn 1 hạn chế là không bắt đầu được số đầu tiên, ví dụ ta có dãy số:

08200, 08200, 08200

Bây giờ ta muốn nó tăng dần thành: ABC00, ABC01, ABC02

Nhưng nó chỉ tăng dần là: ABC01, ABC02, ABC03

è Không bắt đầu được từ 0 hoặc 00

Mình xin cảm ơn các bạn trước!

Mình gởi hình để các bạn tham khảo nha! 



(defun c:td (/ kw ss str n)
(prompt "\nSua tex tang dan(TD)")
  (initget "T D")
  (if (and
	(if (setq kw (getkword "\nTren xuong/Duoi len[T/D]<T>: ")) kw (setq kw "T"))
	(setq ss (ssget '((0 . "*TEXT"))))
      )
    (progn
      (setq str (getstring "\nNhap chuoi: "))
      (setq ss
	     (vl-sort (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))

		      '(lambda (x y)
			 (> (cadr (cdr (assoc 10 (entget x))))
			    (cadr (cdr (assoc 10 (entget y))))
			 )
		       )
	     )
      )
      (if (= kw "D")(setq ss (reverse ss)))
      (setq n 1)
      (foreach e  (mapcar 'vlax-ename->vla-object ss)
	(vla-put-textstring e (strcat (substr str 1 (- (strlen str) 1)) (itoa n)))
	(setq n (1+ n))
	)
    )
  )
  (princ)
  )

 

125368_untitled.jpg


  • 0

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 16 August 2016 - 09:07 PM

Lisp này không "hạn chế" như bạn nói, bởi đã bắt đầu đúng quy luật là con số 1.

Sửa cho bạn bắt đầu bằng con số 0 rồi mai mốt có kẻ dèm pha sao không bắt đầu bằng số -1 thì bạn tính sao?


  • 0

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

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


#3 thainguyen_tg

thainguyen_tg

    biết vẽ circle

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

Đã gửi 16 August 2016 - 09:14 PM

Theo mình nghĩ bắt đầu từ số 0 hoặc 00 thì hay hơn chứ bạn. Thường thì cái gì bắt đầu từ 0 lên có chứ âm lên có thì ít lắm bạn ah!  


  • 0

#4 thainguyen_tg

thainguyen_tg

    biết vẽ circle

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

Đã gửi 17 August 2016 - 06:25 PM

Vấn đề này hơi khó cho các bạn, nhưng nếu ai biết thì giúp mình với nha! Thanks các bạn!
  • 0

#5 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

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

Đã gửi 17 August 2016 - 08:45 PM

Nếu không tùy biến thì thử thay (setq n 1) thành (setq n 0) xem sao...!


  • 0

#6 thainguyen_tg

thainguyen_tg

    biết vẽ circle

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

Đã gửi 17 August 2016 - 09:00 PM

Nếu không tùy biến thì thử thay (setq n 1) thành (setq n 0) xem sao...!

Thanks bạn quocmanh04tt!

Nhưng không được bạn ơi, nếu thay (setq n 1) thành (setq n 0thì nó lại bắt đầu là 0.

Ý của mình ở đây là: Số đầu tiên mình muốn tăng dần là do mình quy định(chứ không phải mặc định là bắt đầu là 0 hay 1)

Ví dụ: mình muốn nó tăng lên từ 0->5 hoặc 2-> 5 hoặc 1->5(số bắt đầu do mình tự quyết)


  • 0

#7 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

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

Đã gửi 17 August 2016 - 09:03 PM

Chẳng phải là câu của mình là "Nếu không tùy biến" đó sao??? Và cũng đúng với bài #1 của bạn.


  • 0

#8 thainguyen_tg

thainguyen_tg

    biết vẽ circle

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

Đã gửi 17 August 2016 - 09:24 PM

Chẳng phải là câu của mình là "Nếu không tùy biến" đó sao??? Và cũng đúng với bài #1 của bạn.

Chắc bạn hiểu nhầm ý mình rồi. 

Ý của mình ở đây là: Số đầu tiên mình muốn tăng dần là do mình quy định(chứ không phải mặc định là bắt đầu là 0 hay 1)

Ví dụ: mình muốn nó tăng lên từ 0->5 hoặc 2-> 5 hoặc 1->5(số bắt đầu do mình tự quyết)


  • 0

#9 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

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

Đã gửi 17 August 2016 - 09:30 PM

Hiểu và quá hiểu nên mới có câu "Nếu không tùy biến", và cũng hiểu thêm: ý trong bài #1 và bài #6 trở đi là khác nhau.


  • 0

#10 thainguyen_tg

thainguyen_tg

    biết vẽ circle

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

Đã gửi 18 August 2016 - 04:50 AM

Nếu bạn quocmanh04tt bó tay thì chắc ít ai giải quyết được vấn đề này nhỉ! 


  • 0

#11 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 18 August 2016 - 07:37 AM

Nếu bạn quocmanh04tt bó tay thì chắc ít ai giải quyết được vấn đề này nhỉ! 

Làm gì có chuyện quocmanh04tt hay ai đó bó tay.

Vấn đề là : bạn đã tự cột tay của mình.

 

Đọc kỹ #5 nhé!


  • 0

#12 thainguyen_tg

thainguyen_tg

    biết vẽ circle

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

Đã gửi 18 August 2016 - 12:44 PM

Nếu mà không tuỳ biến thì lsp này có 1 han chế như mình nói o đầu đề còn gì nữa
  • 0

#13 thainguyen_tg

thainguyen_tg

    biết vẽ circle

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

Đã gửi 19 August 2016 - 06:47 PM

Ai biết giúp mình vấn đề này với.
  • 0

#14 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 19 August 2016 - 09:37 PM

Với trình của quocmanh04tt thì dự là chỉ mất 2 phút, trong đó có 1 phút do bàn phím bị kẹt.

Vấn đề là làm sao để ổng sửa chứ kích động và thách thức chỉ sinh ra bạo lực.


  • 0

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

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


#15 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

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

Đã gửi 19 August 2016 - 10:28 PM

Bác Hạ lại kích động với chú quocmanh04tt rồi...!

Với trình của bác Hạ chỉ mất khoảng 1 phút + 1 giây (trong đó có 1 phút + 0.5 giây do cuộc điện thoại gọi đến...) hehe :D


  • 0

#16 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 19 August 2016 - 10:36 PM

Thôi, chú đã thương thì yêu cho trót đi, chỉ hơi buồn cho chủ top tí. Tám nhiều sẽ bị chửi double luôn á.


  • 0

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

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


#17 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

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

Đã gửi 19 August 2016 - 10:38 PM

Phát biểu đầu tiên là của bác mà! Xin lỗi bác là chú đã chen ngang.


  • 0

#18 thainguyen_tg

thainguyen_tg

    biết vẽ circle

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

Đã gửi 20 August 2016 - 04:52 AM

Đã thương thì thương cho trót đi bạn quocmanh04tt  ơi! 


  • 0

#19 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 20 August 2016 - 09:10 AM

Than tới than lui tốn đất của cadviet quá:

(defun c:td (/ kw ss str n)
(prompt "\nSua tex tang dan(TD)")
  (initget "T D")
  (if (and
	(if (setq kw (getkword "\nTren xuong/Duoi len[T/D]<T>: ")) kw (setq kw "T"))
	(setq ss (ssget '((0 . "*TEXT"))))
      )
    (progn
      (setq str (getstring "\nNhap chuoi co dinh: "))
         (setq ss
	     (vl-sort (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))

		      '(lambda (x y)
			 (> (cadr (cdr (assoc 10 (entget x))))
			    (cadr (cdr (assoc 10 (entget y))))
			 )
		       )
	     )
      )
      (if (= kw "D")(setq ss (reverse ss)))
     (setq n (getreal "\nNhap gia tri bat dau : "))
      (foreach e  (mapcar 'vlax-ename->vla-object ss)
	(vla-put-textstring e (strcat str (itoa (fix n))))
	(setq n (+ n 1))
	)
    )
  )
  (princ)
  )

  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#20 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

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

Đã gửi 20 August 2016 - 10:45 AM

@Bác duy782006: Tui thắc mắc 1 điều là tại sao bác không getint luôn mà bác lại getreal, xong rồi bác phịch (fix) nó? :D


  • 0