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.
hungpx2008

Lisp cơ bản đã viết xong cần tinh chỉnh

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

hungpx2008    2

Mình có đoạn lisp viết về balloon giống như mechanical nhưng viết cho công ty mình. Viết đến đây có một số thắc mắc xin các bạn chỉ giáo.

http://www.cadviet.com/upfiles/FILE_1.rar

Các bạn có thể download về coi rùi cho mình hỏi:

1. Mình muốn làm cho cái layer của leader với ball auto là layer 0

2. layer của text là 5.

3. Khi bắt đầu vẽ đến điểm pa chuyển sang p4 thì othormode chuyển sang on.

đây là code:

;;;-------------------------------------------------------

(defun Begin_BA()

(setq

oldOs (getvar "osmode")

oldTrack ( getvar "trackpath")

oldOrth ( getvar "orthomode")

StyleBA ( getvar "textstyle")

Th (cdr (assoc 40 (tblsearch "style" StyleBA)))

n 0

TT (getstring "\nInput name of this plate <>:")

thik ( getstring"\nInput thick of this plate:")

)

(if (= Th 0) (setq Ts (getvar "textsize")) (setq Ts Th))

(setvar "orthomode" 0)

(setvar "osmode" 0)

)

;;;-------------------------------------------------------

(defun So_BA()

(setvar "osmode" 4)

(setvar "trackpath" 0)

(setq

p2 (getpoint pa "\nPlace number : ")

p3 (polar p2 (* pi 1.5) (* 0.5 Ts))

g (angle pa p2)

r1 (distance pa p2)

r2 (* 1.08333 Ts)

p4 (polar pa g (- r1 r2))

)

(setvar "osmode" 0)

(command "leader" p1 pa p4 "" "" "n")

(command "circle" p2 r2)

(if (= Th 0)

(command "text" "j" "c" p3 Ts 0 TT)

(command "text" "j" "c" p3 0 TT)

)

(command "scale" (entlast) "" p3 1)

)

;;;-------------------------------------------------------

(defun End_BA()

(setvar "orthomode" oldOrth)

(setvar "osmode" oldos)

(setvar "trackpath" oldTrack)

(princ)

)

;;;*************************************************

(Defun C:BA( / oldOs oldTrack OldOrth StyleBA Th n

TT Ts p2 pa p3 g r1 r2 p4 p5 thik)

(Begin_BA)

(While

(setvar "osmode" 15359)

(setq p1 (getpoint "\nPoint to part <exit>:")

pa (getpoint p1 "\n Next point:"))

(So_BA)

(setq p5 (getpoint "\nPoint of thick plate text:")

)

(command "text" "j" "TL" p5 0 thik)

)

(End_BA)

)

;;;*************************************************

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
Nguyen Hoanh    4.524

Bạn kiểm tra lại giúp là lỗi khi upload hay lỗi khi nén file. Vì file của bạn khi download về, chỉ extract được file lisp mà không extract được file dwg. Không có file dwg của bạn để thử, đành phải trả lời tù mù vậy.

 

Câu hỏi 1 & 2:

Để đối tượng nào vào layer gì, bạn chèn mã lệnh:

(setvar "CLAYER" TENLAYER) và trước dòng command tạo ra lệnh đó.

Ví dụ:

- Tạo leader layer 0, bạn chèn (setvar "CLAYER" "0") ngay trước dòng (command "leader" p1 pa p4 "" "" "n")

- Tạo text layer 5, bạn chèn (setvar "CLAYER" "5") ngay trước dòng (command "text" "j" "c" p3 Ts 0 TT) tất nhiên trong trường hợp cụ thể này bạn phải thêm mã progn để không làm sai bản chất của lệnh lisp.

 

Câu hỏi 3:

Bạn thêm lệnh '_ortho ON (lệnh transparence) ngay giữa pa và p4, lúc đó mã lệnh trở thành như sau: (command "leader" p1 pa "'_ortho ON" p4 "" "" "n") bạn đừng quên dấu phẩy trên ở trước chữ _ortho. Hoặc bạn có thể tách dòng lệnh command ra rồi chèn mã vào giữa. Dòng (command "leader" p1 pa "'_ortho ON" p4 "" "" "n") trở thành:

(command "leader" p1 pa)

(setvar "ORTHOMODE" 1)

(commanD p4 "" "" "n")

 

Với cách làm như trên, bạn nên chèn dòng lệnh lưu cấu hình trước khi thực hiện và chèn mã lệnh trả cấu hình khi thực hiện xong. Mã lệnh lưu cấu hình:

(setq OLD_ORTHO (getvar "ORTHOMODE"))

(setq OLD_LAYER (getvar "CLAYER"))

Mã lệnh trả cấu hình:

(setvar "ORTHOMODE" OLD_ORTHO)

(setvar "CLAYER" OLD_LAYER)

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
hungpx2008    2
Bạn kiểm tra lại giúp là lỗi khi upload hay lỗi khi nén file. Vì file của bạn khi download về, chỉ extract được file lisp mà không extract được file dwg. Không có file dwg của bạn để thử, đành phải trả lời tù mù vậy.

 

Câu hỏi 1 & 2:

Để đối tượng nào vào layer gì, bạn chèn mã lệnh:

(setvar "CLAYER" TENLAYER) và trước dòng command tạo ra lệnh đó.

Ví dụ:

- Tạo leader layer 0, bạn chèn (setvar "CLAYER" "0") ngay trước dòng (command "leader" p1 pa p4 "" "" "n")

- Tạo text layer 5, bạn chèn (setvar "CLAYER" "5") ngay trước dòng (command "text" "j" "c" p3 Ts 0 TT) tất nhiên trong trường hợp cụ thể này bạn phải thêm mã progn để không làm sai bản chất của lệnh lisp.

 

Câu hỏi 3:

Bạn thêm lệnh '_ortho ON (lệnh transparence) ngay giữa pa và p4, lúc đó mã lệnh trở thành như sau: (command "leader" p1 pa "'_ortho ON" p4 "" "" "n") bạn đừng quên dấu phẩy trên ở trước chữ _ortho. Hoặc bạn có thể tách dòng lệnh command ra rồi chèn mã vào giữa. Dòng (command "leader" p1 pa "'_ortho ON" p4 "" "" "n") trở thành:

(command "leader" p1 pa)

(setvar "ORTHOMODE" 1)

(commanD p4 "" "" "n")

 

Với cách làm như trên, bạn nên chèn dòng lệnh lưu cấu hình trước khi thực hiện và chèn mã lệnh trả cấu hình khi thực hiện xong. Mã lệnh lưu cấu hình:

(setq OLD_ORTHO (getvar "ORTHOMODE"))

(setq OLD_LAYER (getvar "CLAYER"))

Mã lệnh trả cấu hình:

(setvar "ORTHOMODE" OLD_ORTHO)

(setvar "CLAYER" OLD_LAYER)

OKI THNK BÁC

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


×