Đến nội dung


Hình ảnh
- - - - -

[Nhờ chỉnh sửa] lisp copy text tăng dần


  • Please log in to reply
12 replies to this topic

#1 hoangkimoanh

hoangkimoanh

    biết vẽ spline

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

Đã gửi 17 February 2014 - 03:44 PM

em thấy có 1 topic với nội dung tương tự nhưng bị khóa nên em copy tiêu đề này nhờ các anh chỉnh sửa giúp em lisp dưới đây như sau nhé!
em copy bên trang autodesk nhưng vốn tiếng Anh không được tốt nên không giám nhờ giúp đỡ mà các chuyên gia CADVIET nhiều khi con giỏi hơn, nên thôi cứ "cây nhà lá vườn mà dùng" anh nhỉ!
- em muốn khi pick chuột trái điểm số đang tăng 1,2,3,4,5 thì mình lại muốn số nhẩy lên 7,8,9,10 bằng pick chuột phải một cái hoặc nhiều cái tùy vào khoảng nhảy của số và pick chuột trái để ghi số tăng tiếp (có thể lắp đi lặp lại nếu cần khoảng nhảy)
ô, chức năng upload đâu mất rồi?!
thồi em dùng phương án tạm thời bằng copy (nếu nó bị lỗi nhờ các anh mở giúp bài cuối cùng của trang 2 dowload theo đường link : http://forums.autode.../3507198/page/2 )


(defun c:CPI (/ Block ent Numtext Blk Symbol sym ans pt1 pt2 gr code data NewObj end)
;;; pBe 23 June 2012 ;;;
;;;http://forums.autode.../3507198/page/2 ;;;

(setvar 'cmdecho 0)
(prompt "\rSelect Block/Text:")
(cond
((and
(setq Block (ssget "_+.:S:L" '((0 . "INSERT,*TEXT"))))
(setq Block (ssname Block 0))
(setq NumText
(if (and (eq (cdr (assoc 0
(entget Block)))
"INSERT")
(setq Blk (member '(66 . 1)
(entget Block))))
(cdr (assoc 1 (entget (entnext Block))))
(cdr (assoc 1 (entget Block)))))
(progn
(if (not Symbol)
(setq Symbol "+"))
(initget "+ -")
(setq Symbol
(cond
((getkword
(strcat "\nChoose [+/-]: <" Symbol ">: ")
)
)
(Symbol))
)
(initget "Y N")
(setq ans (cond ( (getkword "\nPrefix [No/Yes] <No>: ") ) ( "N" )))
)
(setq sym (eval (read symbol)))
(setq ent (vlax-ename->vla-object Block))
(setq end nil pt1 (vlax-get ent 'insertionpoint))
(setq NewObj (vla-copy ent))
(while (null end)
(while
(progn
(prompt "\rPick Next Point/Press [+/-/=] Any key to Exit")
(setq gr (grread t 15 0)
code (car gr)
data (cadr gr)
)
(cond
((= 5 code)
(vlax-invoke NewObj 'Move pt1 (setq pt2 data))
(setq pt1 pt2))
((= 2 code)
(setq sym (cond
((= data 43) +)
((= data 45) -)
((= data 61) *)
((setq end T) (entdel (entlast)))))
nil)
((= 3 code)
(vlax-invoke NewObj 'Move pt1 (setq pt2 data))
(vla-put-textstring
(if (not Blk)
NewObj
(car (vlax-invoke
NewObj
'GetAttributes))
)
(progn
(setq NumText
(itoa (eval (sym (atoi Numtext) 1
))))
(if (and (< (strlen NumText) 2)
(eq ans "Y"))
(strcat "0" NumText)
Numtext)
)
)
(setq ent NewObj)
(setq NewObj (vla-copy ent))

nil)
)
)
)
)
)
)
)
(princ)
)

(vl-load-com)
(prompt
"\n>>>...CopyIncrementPlus.lsp is now loaded by pBe. Type CPI to run...<<<"
) ;_ end_prompt
(princ)
  • 0

#2 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 19 February 2014 - 12:36 AM

em thấy có 1 topic với nội dung tương tự nhưng bị khóa nên em copy tiêu đề này nhờ các anh chỉnh sửa giúp em lisp dưới đây như sau nhé!
em copy bên trang autodesk nhưng vốn tiếng Anh không được tốt nên không giám nhờ giúp đỡ mà các chuyên gia CADVIET nhiều khi con giỏi hơn, nên thôi cứ "cây nhà lá vườn mà dùng" anh nhỉ!
- em muốn khi pick chuột trái điểm số đang tăng 1,2,3,4,5 thì mình lại muốn số nhẩy lên 7,8,9,10 bằng pick chuột phải một cái hoặc nhiều cái tùy vào khoảng nhảy của số và pick chuột trái để ghi số tăng tiếp (có thể lắp đi lặp lại nếu cần khoảng nhảy)
ô, chức năng upload đâu mất rồi?!
thồi em dùng phương án tạm thời bằng copy (nếu nó bị lỗi nhờ các anh mở giúp bài cuối cùng của trang 2 dowload theo đường link : http://forums.autode.../3507198/page/2 )


(defun c:CPI (/ Block ent Numtext Blk Symbol sym ans pt1 pt2 gr code data NewObj end)
;;; pBe 23 June 2012 ;;;
;;;http://forums.autode.../3507198/page/2 ;;;

(setvar 'cmdecho 0)
(prompt "\rSelect Block/Text:")
(cond
((and
(setq Block (ssget "_+.:S:L" '((0 . "INSERT,*TEXT"))))
(setq Block (ssname Block 0))
(setq NumText
(if (and (eq (cdr (assoc 0
(entget Block)))
"INSERT")
(setq Blk (member '(66 . 1)
(entget Block))))
(cdr (assoc 1 (entget (entnext Block))))
(cdr (assoc 1 (entget Block)))))
(progn
(if (not Symbol)
(setq Symbol "+"))
(initget "+ -")
(setq Symbol
(cond
((getkword
(strcat "\nChoose [+/-]: <" Symbol ">: ")
)
)
(Symbol))
)
(initget "Y N")
(setq ans (cond ( (getkword "\nPrefix [No/Yes] <No>: ") ) ( "N" )))
)
(setq sym (eval (read symbol)))
(setq ent (vlax-ename->vla-object Block))
(setq end nil pt1 (vlax-get ent 'insertionpoint))
(setq NewObj (vla-copy ent))
(while (null end)
(while
(progn
(prompt "\rPick Next Point/Press [+/-/=] Any key to Exit")
(setq gr (grread t 15 0)
code (car gr)
data (cadr gr)
)
(cond
((= 5 code)
(vlax-invoke NewObj 'Move pt1 (setq pt2 data))
(setq pt1 pt2))
((= 2 code)
(setq sym (cond
((= data 43) +)
((= data 45) -)
((= data 61) *)
((setq end T) (entdel (entlast)))))
nil)
((= 3 code)
(vlax-invoke NewObj 'Move pt1 (setq pt2 data))
(vla-put-textstring
(if (not Blk)
NewObj
(car (vlax-invoke
NewObj
'GetAttributes))
)
(progn
(setq NumText
(itoa (eval (sym (atoi Numtext) 1
))))
(if (and (< (strlen NumText) 2)
(eq ans "Y"))
(strcat "0" NumText)
Numtext)
)
)
(setq ent NewObj)
(setq NewObj (vla-copy ent))

nil)
)
)
)
)
)
)
)
(princ)
)

(vl-load-com)
(prompt
"\n>>>...CopyIncrementPlus.lsp is now loaded by pBe. Type CPI to run...<<<"
) ;_ end_prompt
(princ)

Hề hề hề,

Yêu cầu pick chuột phải như bạn mình không làm được nhưng có cách khác để có thực hiện được việc nhập số với bước nhảy tùy chọn.

Nếu bạn đồng ý mình sẽ hướng dẫn cách làm.


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

hoangkimoanh

    biết vẽ spline

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

Đã gửi 19 February 2014 - 11:56 AM

đã nêu khó cách kia thì nhờ anh giúp em thực hiện việc nhập số với bước nhảy tùy chọn cũng được! cảm ơn anh nhiều!
  • 0

#4 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 19 February 2014 - 09:44 PM

đã nêu khó cách kia thì nhờ anh giúp em thực hiện việc nhập số với bước nhảy tùy chọn cũng được! cảm ơn anh nhiều!

Hề hề hề,

vậy thì bạn hãy thử làm như sau nhé

1/- thêm dòng code sau:

(setq gs (getint "\n Hay nhap gia so: ")) 

vào phía trên dòng code: 

(setq NumText

2/- Sửa dòng code:

(itoa (eval (sym (atoi Numtext) 1

 thành:

(itoa (eval (sym (atoi Numtext) (if gs gs 1)

 Sau đó save lisp lại và test thử cói sao nhé.


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

#5 hoangkimoanh

hoangkimoanh

    biết vẽ spline

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

Đã gửi 19 February 2014 - 10:15 PM

ah, không phải thế anh ạ! tại em giải thích không rõ. em muốn đánh số thứ tự 1,2,3,4,5 nhưng không muốn số 6,7,8 tiếp theo mà tiếp theo sẽ là 9,10,11,12... (những số tự nhiên tiếp sau đó nếu không muốn ghi ra, có thể pick chuột phải cho nó nhảy qua cho tới số mình chọn hoặc nhập số muốn đánh tiếp nhưng không muốn bị ngắt ngang lệnh).


  • 0

#6 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 20 February 2014 - 12:25 PM

ah, không phải thế anh ạ! tại em giải thích không rõ. em muốn đánh số thứ tự 1,2,3,4,5 nhưng không muốn số 6,7,8 tiếp theo mà tiếp theo sẽ là 9,10,11,12... (những số tự nhiên tiếp sau đó nếu không muốn ghi ra, có thể pick chuột phải cho nó nhảy qua cho tới số mình chọn hoặc nhập số muốn đánh tiếp nhưng không muốn bị ngắt ngang lệnh).

Hề hề hề,

Nó đâu ngắt ngang lệnh , thay vì em pick chuốt phải thì khi em pick chuột trái nó sẽ hỏi em muốn tăng bao nhiêu (tức là nhập gia số mà. nếu em không nhập gia số này thì chỉ việc enter là nó mặc định nhảy thêm 1 mà.

Tỳ như em muốn như trên thì làm như sau;

Khi lisp yêu cầu pick chọn điểm , 5 lần dầu em cứ nhấn enter khi lisp yêu cầu nhập gai số.

Ở lần thứ 6 khi lisp hỏi nhập gia số thì em nhập là 4, như vậy lisp sẽ uýnh số tiếp theo là 5+4=0 chứ không phải là 6.

Lần thứ 7 em lại chả nhập gì mà nhấn enter, như vậy lisp sẽ gi ra số thiếp theo là 7 chứ không phải là 6+4=10 như lần trước đó nữa.

và cứ thế , nhấn entet khi lisp yêu cầu nhập gia số (bước nhảy) thì em sẽ có bước nhảy là 1 cho đến khi em nhập gia số mới.

hãy check lại xem sao.


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

ketxu

    Copier - Paster - Editor

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

Đã gửi 21 February 2014 - 11:54 AM

Không can thiệp nội dung

(defun c:CPI (/ Block ent Numtext Blk Symbol sym ans pt1 pt2 gr code data NewObj end)
;;; pBe 23 June 2012 ;;;
;;;http://forums.autode.../3507198/page/2	;;;

(setvar 'cmdecho 0)
(prompt "\rSelect Block/Text:")
(cond
	((and
		(setq Block (ssget "_+.:S:L" '((0 . "INSERT,*TEXT"))))
		(setq Block (ssname Block 0))
		(setq NumText
			(if 
				(and 
					(eq (cdr (assoc 0(entget Block)))"INSERT")
					(setq Blk (member '(66 . 1)(entget Block)))
				)
				(cdr (assoc 1 (entget (entnext Block))))
				(cdr (assoc 1 (entget Block)))
			)
		)
(progn
	(if (not Symbol)(setq Symbol "+"))
	(initget "+ -")
	(setq Symbol
		(cond	((getkword	(strcat "\nChoose [+/-]: <" Symbol ">: ")))
		(Symbol))
	)
	(initget "Y N")
	(setq ans (cond ( (getkword "\nPrefix [No/Yes] <No>: ") ) ( "N" )))
)
(setq sym (eval (read symbol)))
(setq ent (vlax-ename->vla-object Block))
(setq end nil pt1 (vlax-get ent 'insertionpoint))
(setq NewObj (vla-copy ent))
(while (null end)
(while
(progn
	(prompt "\rPick Next Point/Press [+/-/=] / Right Click to Increase / Any key to Exit")
	(setq gr (grread t 15 0)
	code (car gr)
	data (cadr gr)
)
(cond
((= 5 code)
(vlax-invoke NewObj 'Move pt1 (setq pt2 data))
(setq pt1 pt2))
((= 2 code)
(setq sym (cond
((= data 43) +)
((= data 45) -)
((= data 61) *)
((setq end T) (entdel (entlast)))))
nil)
((= 3 code)
(vlax-invoke NewObj 'Move pt1 (setq pt2 data))
(vla-put-textstring
(if (not Blk)
NewObj
(car (vlax-invoke
NewObj
'GetAttributes))
)
(progn
(setq NumText
(itoa (eval (sym (atoi Numtext) 1
))))
(if (and (< (strlen NumText) 2)
(eq ans "Y"))
(strcat "0" NumText)
Numtext)
)
)
(setq ent NewObj)
(setq NewObj (vla-copy ent))

nil)
((= 25 code)(setq NumText (itoa (1+ (atoi NumText)))))
)
)
)
)
)
)
)
(princ)
)

 


  • 3

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#8 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 21 February 2014 - 12:00 PM

Hề hề hề,

 

Không can thiệp nội dung

(defun c:CPI (/ Block ent Numtext Blk Symbol sym ans pt1 pt2 gr code data NewObj end)
;;; pBe 23 June 2012 ;;;
;;;http://forums.autode.../3507198/page/2	;;;

(setvar 'cmdecho 0)
(prompt "\rSelect Block/Text:")
(cond
	((and
		(setq Block (ssget "_+.:S:L" '((0 . "INSERT,*TEXT"))))
		(setq Block (ssname Block 0))
		(setq NumText
			(if 
				(and 
					(eq (cdr (assoc 0(entget Block)))"INSERT")
					(setq Blk (member '(66 . 1)(entget Block)))
				)
				(cdr (assoc 1 (entget (entnext Block))))
				(cdr (assoc 1 (entget Block)))
			)
		)
(progn
	(if (not Symbol)(setq Symbol "+"))
	(initget "+ -")
	(setq Symbol
		(cond	((getkword	(strcat "\nChoose [+/-]: <" Symbol ">: ")))
		(Symbol))
	)
	(initget "Y N")
	(setq ans (cond ( (getkword "\nPrefix [No/Yes] <No>: ") ) ( "N" )))
)
(setq sym (eval (read symbol)))
(setq ent (vlax-ename->vla-object Block))
(setq end nil pt1 (vlax-get ent 'insertionpoint))
(setq NewObj (vla-copy ent))
(while (null end)
(while
(progn
	(prompt "\rPick Next Point/Press [+/-/=] / Right Click to Increase / Any key to Exit")
	(setq gr (grread t 15 0)
	code (car gr)
	data (cadr gr)
)
(cond
((= 5 code)
(vlax-invoke NewObj 'Move pt1 (setq pt2 data))
(setq pt1 pt2))
((= 2 code)
(setq sym (cond
((= data 43) +)
((= data 45) -)
((= data 61) *)
((setq end T) (entdel (entlast)))))
nil)
((= 3 code)
(vlax-invoke NewObj 'Move pt1 (setq pt2 data))
(vla-put-textstring
(if (not Blk)
NewObj
(car (vlax-invoke
NewObj
'GetAttributes))
)
(progn
(setq NumText
(itoa (eval (sym (atoi Numtext) 1
))))
(if (and (< (strlen NumText) 2)
(eq ans "Y"))
(strcat "0" NumText)
Numtext)
)
)
(setq ent NewObj)
(setq NewObj (vla-copy ent))

nil)
((= 25 code)(setq NumText (itoa (1+ (atoi NumText)))))
)
)
)
)
)
)
)
(princ)
)

Thank Ketxu về điều kiện  ((= 25 code) .... ). Mình có tham khảo trong help nhưng không biết giá trị của code là 25 khi pick chuột phải. Các giá trị này có thể tham khảo ở đâu cho rõ ràng bác Két hè???


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

#9 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 21 February 2014 - 12:02 PM

(grread nil) vào command rồi tìm ra tất cả thôi.


  • 3

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

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


#10 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 21 February 2014 - 12:34 PM

Tks bác Hạ ^^


  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#11 hoangkimoanh

hoangkimoanh

    biết vẽ spline

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

Đã gửi 21 February 2014 - 01:54 PM

Không can thiệp nội dung

(defun c:CPI (/ Block ent Numtext Blk Symbol sym ans pt1 pt2 gr code data NewObj end)
;;; pBe 23 June 2012 ;;;
;;;http://forums.autode.../3507198/page/2	;;;

(setvar 'cmdecho 0)
(prompt "\rSelect Block/Text:")
(cond
	((and
		(setq Block (ssget "_+.:S:L" '((0 . "INSERT,*TEXT"))))
		(setq Block (ssname Block 0))
		(setq NumText
			(if 
				(and 
					(eq (cdr (assoc 0(entget Block)))"INSERT")
					(setq Blk (member '(66 . 1)(entget Block)))
				)
				(cdr (assoc 1 (entget (entnext Block))))
				(cdr (assoc 1 (entget Block)))
			)
		)
(progn
	(if (not Symbol)(setq Symbol "+"))
	(initget "+ -")
	(setq Symbol
		(cond	((getkword	(strcat "\nChoose [+/-]: <" Symbol ">: ")))
		(Symbol))
	)
	(initget "Y N")
	(setq ans (cond ( (getkword "\nPrefix [No/Yes] <No>: ") ) ( "N" )))
)
(setq sym (eval (read symbol)))
(setq ent (vlax-ename->vla-object Block))
(setq end nil pt1 (vlax-get ent 'insertionpoint))
(setq NewObj (vla-copy ent))
(while (null end)
(while
(progn
	(prompt "\rPick Next Point/Press [+/-/=] / Right Click to Increase / Any key to Exit")
	(setq gr (grread t 15 0)
	code (car gr)
	data (cadr gr)
)
(cond
((= 5 code)
(vlax-invoke NewObj 'Move pt1 (setq pt2 data))
(setq pt1 pt2))
((= 2 code)
(setq sym (cond
((= data 43) +)
((= data 45) -)
((= data 61) *)
((setq end T) (entdel (entlast)))))
nil)
((= 3 code)
(vlax-invoke NewObj 'Move pt1 (setq pt2 data))
(vla-put-textstring
(if (not Blk)
NewObj
(car (vlax-invoke
NewObj
'GetAttributes))
)
(progn
(setq NumText
(itoa (eval (sym (atoi Numtext) 1
))))
(if (and (< (strlen NumText) 2)
(eq ans "Y"))
(strcat "0" NumText)
Numtext)
)
)
(setq ent NewObj)
(setq NewObj (vla-copy ent))

nil)
((= 25 code)(setq NumText (itoa (1+ (atoi NumText)))))
)
)
)
)
)
)
)
(princ)
)

anh ketxu ơi, trong phần này anh giúp em là pick chuột phải để tăng nhưng sao em pick chuột phải nó không có tác dụng tăng mà nó cứ ì ra đấy nhỉ, pick chuột trái nó lại vẫn là số tăng tiếp theo của số cũ!


  • 0

#12 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 21 February 2014 - 08:54 PM

Không can thiệp nội dung

(defun c:CPI (/ Block ent Numtext Blk Symbol sym ans pt1 pt2 gr code data NewObj end)
;;; pBe 23 June 2012 ;;;
;;;http://forums.autode.../3507198/page/2	;;;

(setvar 'cmdecho 0)
(prompt "\rSelect Block/Text:")
(cond
	((and
		(setq Block (ssget "_+.:S:L" '((0 . "INSERT,*TEXT"))))
		(setq Block (ssname Block 0))
		(setq NumText
			(if 
				(and 
					(eq (cdr (assoc 0(entget Block)))"INSERT")
					(setq Blk (member '(66 . 1)(entget Block)))
				)
				(cdr (assoc 1 (entget (entnext Block))))
				(cdr (assoc 1 (entget Block)))
			)
		)
(progn
	(if (not Symbol)(setq Symbol "+"))
	(initget "+ -")
	(setq Symbol
		(cond	((getkword	(strcat "\nChoose [+/-]: <" Symbol ">: ")))
		(Symbol))
	)
	(initget "Y N")
	(setq ans (cond ( (getkword "\nPrefix [No/Yes] <No>: ") ) ( "N" )))
)
(setq sym (eval (read symbol)))
(setq ent (vlax-ename->vla-object Block))
(setq end nil pt1 (vlax-get ent 'insertionpoint))
(setq NewObj (vla-copy ent))
(while (null end)
(while
(progn
	(prompt "\rPick Next Point/Press [+/-/=] / Right Click to Increase / Any key to Exit")
	(setq gr (grread t 15 0)
	code (car gr)
	data (cadr gr)
)
(cond
((= 5 code)
(vlax-invoke NewObj 'Move pt1 (setq pt2 data))
(setq pt1 pt2))
((= 2 code)
(setq sym (cond
((= data 43) +)
((= data 45) -)
((= data 61) *)
((setq end T) (entdel (entlast)))))
nil)
((= 3 code)
(vlax-invoke NewObj 'Move pt1 (setq pt2 data))
(vla-put-textstring
(if (not Blk)
NewObj
(car (vlax-invoke
NewObj
'GetAttributes))
)
(progn
(setq NumText
(itoa (eval (sym (atoi Numtext) 1
))))
(if (and (< (strlen NumText) 2)
(eq ans "Y"))
(strcat "0" NumText)
Numtext)
)
)
(setq ent NewObj)
(setq NewObj (vla-copy ent))

nil)
((= 25 code)(setq NumText (itoa (1+ (atoi NumText)))))
)
)
)
)
)
)
)
(princ)
)

anh ketxu ơi, trong phần này anh giúp em là pick chuột phải để tăng nhưng sao em pick chuột phải nó không có tác dụng tăng mà nó cứ ì ra đấy nhỉ, pick chuột trái nó lại vẫn là số tăng tiếp theo của số cũ!

Hề hề hề,

Với gợi ý của bác Ket và suy nghĩ của mình thay vì click chuột phải nhiều lần để tăng giá trị bước nhảy thi mỗi lần click chuột phãi lisp sẽ yêu cầu nhập gia số, nếu có nhập gia số thì lần click chuột trái tiếp theo giá trị số sẽ được tăng lên bằng bước nhảy, còn nếu không nhập gia số thì lần click chuột trái tiếp theo sẽ chỉ tăng giá trị là 1. Như vậy nếu phải tăng bước nhảy lớn hơn 2 thì sẽ có lợi về thao tác click chuột. còn nếu bước nhảy là 2 thì sẽ bị chậm về thao tác nhập gia số.

Để làm như vậy bạn hãy thay đoạn code mà bác Ketxu bổ sung bằng đoạn code sau:

 (( = 25 code)  (setq gs (getint "\n Hay nhap gia so: "))

 (setq NumText (itoa (eval (sym (atoi Numtext) (if gs (1- gs) 0)))))   

 )   

 

Lưu lại file và test thử coi sao nhé.


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

#13 hoangkimoanh

hoangkimoanh

    biết vẽ spline

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

Đã gửi 22 February 2014 - 11:55 PM

em không hiểu tại sao em sửa như các anh nói mà khi thực hiện pick chuột phải nó chẳng có tác dụng gì cả, cũng không hiện lên đồng "hay nhập gia số". hay tại em sửa như thế này có sai ở trọ nào không các anh nhỉ? 

em không hiểu tại sao em sửa như các anh nói mà khi thực hiện pick chuột phải nó chẳng có tác dụng gì cả, cũng không hiện lên đồng "hay nhập gia số". hay tại em sửa như thế này có sai ở trọ nào không các anh nhỉ?

khi thực hiện pick chuột phải hay trái thì nó vẫn ì ra dòng chữ như thế này:

Command: cpi

Select Block/Text:

Select objects:

 

Choose [+/-]: <+>:

 

Prefix [No/Yes] <No>:

Pick Next Point/Press [+/-/=] / Right Click to Increase / Any key to Exit

================================================

 

.....................................

Numtext)

)

)

(setq ent NewObj)

(setq NewObj (vla-copy ent))

 

nil)

 (( = 25 code)  (setq gs (getint "\n Hay nhap gia so: "))

 

 (setq NumText (itoa (eval (sym (atoi Numtext) (if gs (1- gs) 0)))))  

 )

)

)

)

)

)

)

)

(princ)

 

)

em không hiểu tại sao em sửa như các anh nói mà khi thực hiện pick chuột phải nó chẳng có tác dụng gì cả, cũng không hiện lên đồng "hay nhập gia số". hay tại em sửa như thế này có sai ở trọ nào không các anh nhỉ? 
khi thực hiện pick chuột phải hay trái thì nó vẫn ì ra dòng chữ như thế này:
Command: cpi
Select Block/Text:
Select objects:
 
Choose [+/-]: <+>:
 
Prefix [No/Yes] <No>:
Pick Next Point/Press [+/-/=] / Right Click to Increase / Any key to Exit
================================================
 
Numtext)
)
)
(setq ent NewObj)
(setq NewObj (vla-copy ent))
 
nil)
 (( = 25 code)  (setq gs (getint "\n Hay nhap gia so: "))
 
 (setq NumText (itoa (eval (sym (atoi Numtext) (if gs (1- gs) 0)))))   
 )
)
)
)
)
)
)
)
(princ)

 

)
em không hiểu tại sao em sửa như các anh nói mà khi thực hiện pick chuột phải nó chẳng có tác dụng gì cả, cũng không hiện lên đồng "hay nhập gia số". hay tại em sửa như thế này có sai ở trọ nào không các anh nhỉ? 
khi thực hiện pick chuột phải hay trái thì nó vẫn ì ra dòng chữ như thế này:
Command: cpi
Select Block/Text:
Select objects:
 
Choose [+/-]: <+>:
 
Prefix [No/Yes] <No>:
Pick Next Point/Press [+/-/=] / Right Click to Increase / Any key to Exit
================================================
 
Numtext)
)
)
(setq ent NewObj)
(setq NewObj (vla-copy ent))
 
nil)
 (( = 25 code)  (setq gs (getint "\n Hay nhap gia so: "))
 
 (setq NumText (itoa (eval (sym (atoi Numtext) (if gs (1- gs) 0)))))   
 )
)
)
)
)
)
)
)
(princ)
 
khi thực hiện pick chuột phải hay trái thì nó vẫn ì ra dòng chữ như thế này:
Command: cpi
Select Block/Text:
Select objects:
 
Choose [+/-]: <+>:
 
Prefix [No/Yes] <No>:
Pick Next Point/Press [+/-/=] / Right Click to Increase / Any key to Exit
================================================
 
Numtext)
)
)
(setq ent NewObj)
(setq NewObj (vla-copy ent))
 
nil)
 (( = 25 code)  (setq gs (getint "\n Hay nhap gia so: "))
 
 (setq NumText (itoa (eval (sym (atoi Numtext) (if gs (1- gs) 0)))))   
 )
)
)
)
)
)
)
)
(princ)
)

  • 0