Đến nội dung


Hình ảnh
- - - - -

Thủ thuật nhỏ từ Lisp


  • Please log in to reply
3 replies to this topic

#1 Jin Yong

Jin Yong

    biết lệnh group

  • Vip
  • PipPipPipPipPipPip
  • 498 Bài viết
Điểm đánh giá: 334 (khá)

Đã gửi 19 January 2007 - 08:57 PM

Đôi khi, chỉ bằng một câu lệnh lisp đơn giản, chúng ta đã khiến việc giao tiếp với Cad trở nên dễ dàng và thuận tiện (comfortable)
Bạn làm việc với Cad, tất nhiên phải sử dụng nhiều layer để thể hiện các đối tượng khác nhau. Nhưng thật bất tiện khi mỗi lần vẽ một đối tương mới, một loại đường mới lại phải mò chuột lên đổi Layer, hoặc cứ vẽ rồi phải dùng lệnh Matchprop để sao tính chất
Mọi chuyện sẽ thật đơn giản khi bạn tạo những lệnh lisp để gọi đồng thời cả việc đổi layer và lệnh vẽ
Chẳng hạn:

(defun c:lt () (command "_layer" "Set" "P-thay" "") (command "Line"))
(defun c:lh () (command "_layer" "Set" "P-hatch" "") (command "BHATCH"))

Hai lệnh trên, một là chuyển qua layer P-thay và gọi lệnh vẽ đường thẳng (bằng lệnh lt) một là chuyển qua layer P-hatch và gọi lệnh hatch (bằng lệnh lh)
Chỉ bằng cách viết hai lệnh lisp dạng như vậy, ta đã có thể thực hiện dễ dàng hơn việc vẽ các đối tượng ở các layer khác nhau mà ko cần mò chuột lên đổi layer
Cách trên yêu cầu phải tạo sự thống nhất kiểu layer trong các bản vẽ và sự thống nhất giữa các người vẽ . Trong thời đại hiện nay, việc tạo một style thống nhất là điều nên làm

Đó chỉ là một ứng dụng đơn giản trong việc thân hiện hoá Cad . Jin nghĩ còn nhiều mẹo khác nữa mà mõi người đã tự tạo riêng cho mình . Mọi người có thể cùng chia sẻ chứ ?
  • 0

Phát triển phần mềm thiết kế Kết cấu Việt Nam - http://www.ketcausoft.com


#2 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 27 January 2007 - 04:59 PM

Bạn đã bao giờ muốn copy multi mà khoảng cách của các đối tượng là giống nhau chưa? bạn sẽ dùng lệnh array? tuy nhiên khi bạn dùng lệnh Array, bạn phải trả lời một loạt các thông số không cần thiết. Làm sao để chỉ chọn đối tượng, pick 2 điểm như copy và nhập số đối tượng được nhân lên như lệnh array.

Sau đây là mã lệnh lisp đơn giản để tạo ra lệnh array copy, dùng như lệnh copy, ngoại trừ việc bạn phải nhập thêm số lần được nhân lên (nếu bạn nhập số lần bằng 1, đó chính là lệnh copy nguyên bản).

(defun c:ac (/ dt p1 p2 sl index kc goc)
(setq dt (ssget)
p1 (getpoint "\nVao diem goc: ")
p2 (getpoint p1 "\nVao diem den: ")
sl (getint "\nVao so lan: ")
goc (angle p1 p2)
kc (distance p1 p2)
index 0
)
(repeat sl
(setq index (1+ index))
(command ".copy" dt "" p1 (polar p1 goc (* kc index)))
)
)

Tải file lisp: http://www.cadviet.com/upfiles/ac.lsp
  • 1

#3 khimatro

khimatro

    biết zoom

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

Đã gửi 08 February 2007 - 07:38 PM

Cái này rất hay cám ơn Nguyen Hoanh :lol:
  • 0

#4 almodeus

almodeus

    biết vẽ arc

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

Đã gửi 11 February 2011 - 11:37 PM

bác Hoành có thể đổi cái lisp này lệnh là offfset thay vì copy không...vì copy bị cái lỗi 2d/3d gì đấy
  • 0