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  
hung84uct

Nhờ sửa lisp tăng giá trị cho text

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

hung84uct    0

Nhờ các bác chỉnh sửa giúp e cái lisp này nhé. Hiện tại nó vẫn dùng đc bình thường, lệnh tắt là CVV, dùng để tăng 1 giá delta nào đó cho text, nhưng chỉ áp dụng được với số nguyên như 1,2,3...E muốn nhờ các bác sửa giúp để cái giá trị delta đó có thể là số thập phân như 0.1,.02 v.v...! Rất mong nhận được sự giúp đỡ.Thanhks!

Các bác copy đoạn lisp này rồi xem giúp e nhé:

 

(defun C:Cvv (/ name_op num_op_chon point_base_st point_new_st num_ op_tang

op_tang_new last_ch cong_val)

(setq old_ts_err *error*)

(setvar "Cmdecho" 0)

(if(= cong_vao NIL)(setq cong_vao 1))

(Prompt "\n Neu tham so < 0 --> ket qua giam ! ")

(setq cong_val(getint(strcat "\n Tham so tang /<" (itoa cong_vao)">: ") ))

(if(= cong_val NIL)(setq cong_val cong_vao)(setq cong_vao cong_val))

(Prompt "\n Chon doi tuong tang: ")

(if(and cong_vao (setq op_tang(ssget)))

(progn

(setq num_op_chon(sslength op_tang)

num_ 0

op_tang_new NIL)

(if(setq point_base_st(getpoint "\n > Diem goc: "))

(while

(setq point_new_st(getpoint "\n >> Diem dat tiep theo: " point_base_st))

(if op_tang_new (setq op_tang op_tang_new op_tang_new NIL))

(setq num_op_chon(sslength op_tang) op_tang_new(ssadd))

(if(and point_base_st point_new_st)

(progn

(repeat num_op_chon

(progn

(setq name_op(ssname op_tang num_))

(command "_.Copy" name_op "" point_base_st point_new_st)

(setq last_ch(entlast)

op_tang_new(ssadd last_ch op_tang_new))

(process)

(setq num_ (+ 1 num_))

(if(= num_ num_op_chon)(setq num_ 0))

)

)

)

);if

(setq point_base_st point_new_st)

));if while

);progn

);if

(setq *error* old_ts_err)

(princ)

);End Tang.

(defun process (/ name_check text_value dat_up dat_style num_value new_value)

(progn

(setq name_check(assoc 0 (setq dat_up (entget last_ch))) )

(if(or(= (cdr name_check) "TEXT")

(= (cdr name_check) "MTEXT"))

(progn

(setq text_value(assoc 1 dat_up))

(if(= (distof (cdr text_value) 2) NIL)

(setq dat_style "Text")

(setq dat_style "Num" num_value (atof (cdr text_value)) )

)

(cond

((= dat_style "Num")

(setq new_value (itoa (fix(+ num_value cong_vao))) ))

((= dat_style "Text")

(setq new_value(chr (+ (ascii (cdr text_value)) cong_vao))) )

)

(setq dat_up(subst (cons '1 new_value) text_value dat_up) )

(entmod dat_up)

);progn

);if

(setq name_op NIL)

)

;progn

);Process.

;; Set Dimension To Current by Pick:

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
ntduy1988    9

Mình đã sửa lại theo yêu cầu của bạn:

 

(defun C:Cvv (/ name_op num_op_chon point_base_st point_new_st num_ op_tang

op_tang_new last_ch cong_val cong_vao)

(setq old_ts_err *error*)

(setvar "Cmdecho" 0)

(if(= cong_vao NIL)(setq cong_vao 1.0))

(Prompt "\n Neu tham so < 0 --> ket qua giam ! ")

(setq cong_val(getreal(strcat "\n Tham so tang /<" (rtos cong_vao)">: ") ))

(if(= cong_val NIL)(setq cong_val cong_vao)(setq cong_vao cong_val))

(if (= (- (fix cong_vao) cong_vao) 0) (setq cong_vao (fix cong_vao)))

(Prompt "\n Chon doi tuong tang: ")

(if(and cong_vao (setq op_tang(ssget)))

(progn

(setq num_op_chon(sslength op_tang)

num_ 0

op_tang_new NIL)

(if(setq point_base_st(getpoint "\n > Diem goc: "))

(while

(setq point_new_st(getpoint "\n >> Diem dat tiep theo: " point_base_st))

(if op_tang_new (setq op_tang op_tang_new op_tang_new NIL))

(setq num_op_chon(sslength op_tang) op_tang_new(ssadd))

(if(and point_base_st point_new_st)

(progn

(repeat num_op_chon

(progn

(setq name_op(ssname op_tang num_))

(command "_.Copy" name_op "" point_base_st point_new_st)

(setq last_ch(entlast)

op_tang_new(ssadd last_ch op_tang_new))

(process)

(setq num_ (+ 1 num_))

(if(= num_ num_op_chon)(setq num_ 0))

)

)

)

);if

(setq point_base_st point_new_st)

));if while

);progn

);if

(setq *error* old_ts_err)

(princ)

);End Tang.

(defun process (/ name_check text_value dat_up dat_style num_value new_value)

(progn

(setq name_check(assoc 0 (setq dat_up (entget last_ch))) )

(if(or(= (cdr name_check) "TEXT")

(= (cdr name_check) "MTEXT"))

(progn

(setq text_value(assoc 1 dat_up))

(if(= (distof (cdr text_value) 2) NIL)

(setq dat_style "Text")

(setq dat_style "Num" num_value (atof (cdr text_value)) )

)

(cond

((= dat_style "Num")

(setq new_value (rtos (+ num_value cong_vao)) ))

((= dat_style "Text")

(setq new_value(chr (+ (ascii (cdr text_value)) cong_vao))) )

)

(setq dat_up(subst (cons '1 new_value) text_value dat_up) )

(entmod dat_up)

);progn

);if

(setq name_op NIL)

)

;progn

);Process.

  • 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

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  

×