Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
1 reply to this topic

#1 hung84uct

hung84uct

    Chưa sử dụng CAD

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

Đã gửi 09 August 2010 - 04:36 PM

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:
  • 0

#2 ntduy1988

ntduy1988

    biết vẽ arc

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

Đã gửi 10 August 2010 - 11:52 AM

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.
  • 1