Đến nội dung


Hình ảnh
- - - - -

Nhờ Mọi Người Sửa Dùm Đoạn Lisp Offset


  • Please log in to reply
2 replies to this topic

#1 khiem10ck

khiem10ck

    Chưa sử dụng CAD

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

Đã gửi 25 June 2015 - 11:12 PM

(defun C:OK (/ ent)
(while
(setq dist (getdist "\nOffset value: "))
(while
(= ent nil) (setq ent (car (entsel)))
)
(command ".offset" dist ent pause "")
(command ".change" "last" "" "properties" "ltype" "center" "")
)
(princ)
)

 

mình có đoạn lisp lệnh offset như trên, với mục đích offset liên tục các đối tượng với khoảng cách tuỳ ý, và các đối tượng sau khi offset tự động chuyển sang kiểu đường nét khác.

tuy nhiên đoạn lisp trên lại bị lỗi nếu không chọn được đối tượng ở hàm entsel, nên mình đã cho nó vào một vòng lặp, nhưng lại xuất hiện lỗi khác là vòng lặp này không cho mình chọn đổi tượng khác vì biến ent lấy lại giá trị của lần offset trước

xin mọi người giúp dùm một giải pháp giải quyết vấn đề này.


  • 0

#2 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

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

Đã gửi 25 June 2015 - 11:39 PM

Bạn thử xem sao:

(defun C:OK  (/ ent cmd dist)

  (setq cmd (getvar 'cmdecho))
  (setvar 'cmdecho 0)
  (if (not off_value_org)
    (setq off_value_org 100))
  (setq dist (getdist (strcat "\nOffset value <" (rtos off_value_org 2) ">: ")))
  (if (null dist)
    (setq dist off_value_org)
    (setq off_value_org dist))
  (while (setq ent (car (entsel)))
    (command ".offset" dist ent pause "")
    (command ".change" "last" "" "properties" "ltype" "center" ""))
  (setvar 'cmdecho cmd)
  (princ))

  • 0

#3 khiem10ck

khiem10ck

    Chưa sử dụng CAD

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

Đã gửi 26 June 2015 - 08:15 PM

 

Bạn thử xem sao:

(defun C:OK  (/ ent cmd dist)

  (setq cmd (getvar 'cmdecho))
  (setvar 'cmdecho 0)
  (if (not off_value_org)
    (setq off_value_org 100))
  (setq dist (getdist (strcat "\nOffset value <" (rtos off_value_org 2) ">: ")))
  (if (null dist)
    (setq dist off_value_org)
    (setq off_value_org dist))
  (while (setq ent (car (entsel)))
    (command ".offset" dist ent pause "")
    (command ".change" "last" "" "properties" "ltype" "center" ""))
  (setvar 'cmdecho cmd)
  (princ))

 

bị lỗi  ; error: syntax error không biết bị sai ở đâu?

và hình như cách của bạn thì mình không thể chọn các khoảng cách khác nhau trong mỗi lần offset


  • 0