Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
DesignAutoLisp

Lấy thông tin của Point

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

cả nhà cho e hỏi chút ạ
e mới bắt đầu học viết lisp nên rất bỡ ngỡ và có nhiều điều không hiểu và muốn được các cao thủ chỉ giúp...
thks mọi người.
e có điều này thắc mắc mong mọi người chỉ giáo..!
 
- Trong ví dụ này mình dùng hàm repeat để nhập 10 lần hàm getpoint và vẽ point tại các vị trí ta pick chuột trên màn hình autocad, và vẽ đường pline đi qua các điểm mà ta pick chuột đó.

thấy là câu lệnh (command "point" pt "") thì thực hiện ngon lành còn câu lệnh (command "pline" pt pt "") không thấy bểu hiện gì, vậy lý do là sao?

Tiếp đó mình muốn hỏi luôn là cách lấy tọa độ của các điểm ứng với mỗi lần pick khi ta dùng hàm getpoint là thế nào . Tức là khi ta pick 100 lần chẳng hạn thì sẽ có 100 giá trị tương ứng.

- Mọi người cũng cho mình hỏi thêm câu nữa là trong autolisp có cách nào khai báo kiểu mảng như trong VBA không? Và cách khai báo mảng trong lisp là như nào vậy?

THKSSSSSSSS......:)
 
(repeat 10
(setq pt(getpoint))
(command "point" pt "")
(command "pline" pt pt "")
)

 

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

Lệnh point chỉ nhập 1 cái là dứt lệnh, cho nên phải viết  (command "point" pt) là đủ rồi, dấu "" là dư.

Bạn phải viết như vầy:

(command "pline")

(repeat 10

(setq pt(getpoint))

(command pt)

)

(command "")

Lisp không cần khai báo mảng như vba. Không giống như vba mảng chỉ có 1 loại (mảng integer, mảng real, mảng string...), lisp có mảng mang tên hàm list có thể chứa đủ loại và có thể chứa cả list khác.

td : (list 1 2.5 "ABC" (list "CDF" 345.2))

Sau này khi du nhập vba qua các hàm vla thì lisp mới có dạng khai báo biến kiểu 1 loại như:

(vlax-make-safearray vlax-vbdouble (cons 0 1)) ;;;khai báo mảng 1 chiều gồm 2 phần tử kiểu double

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

thks bạn nhiều...

vậy bạn cho m hỏi là m muốn lấy toạ độ từng điểm khi mình dùng hàm getpoint và pick trên màn hình autocad là thế nào...

và cách lấy thông tin đường pline ta vừa vẽ là thế nào..!

chúc bạn mọi điều may mắn, vui vẻ và thành công...goodluck.. :)

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

thks bạn nhiều...

vậy bạn cho m hỏi là m muốn lấy toạ độ từng điểm khi mình dùng hàm getpoint và pick trên màn hình autocad là thế nào...

và cách lấy thông tin đường pline ta vừa vẽ là thế nào..!

chúc bạn mọi điều may mắn, vui vẻ và thành công...goodluck.. :)

 

1./ Hàm (getpoint) đã cho phép người sử dụng pick điểm trên CAD và lấy tọa độ điểm đó

2./ Cách lấy thông tin đường Pline vừa vẽ 

Hàm (entlast) -> Trả về ename của đối tượng vừa vẽ 

(entget(entlast)) -> lấy thông tin của đối tượng vừa vẽ ra

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

Khi dùng hàm getpoint thì nó trả về 1 list có dạng (x y z), bạn muốn lấy x thí dùng hàm car, lấy y = hàm cadr, lấy z = hàm caddr; hoặc đơn giản hơn thì dùng (nth 0 pt) cho x, thay = 1 cho y, 2 cho z.

Pline khi vẽ như trên thí bạn nhét list (x y z) vào trong 1 cái list khác bằng hàm cons hay append.

Bạn bật help của lisp có ví dụ cách dùng hàm.

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

 anh Tuệ ơi anh cho e hỏi chút về thiết kế Dialog trong autolisp

1./ Hàm (getpoint) đã cho phép người sử dụng pick điểm trên CAD và lấy tọa độ điểm đó

2./ Cách lấy thông tin đường Pline vừa vẽ 

Hàm (entlast) -> Trả về ename của đối tượng vừa vẽ 

(entget(entlast)) -> lấy thông tin của đối tượng vừa vẽ ra

 

do la khi e viet lap trinh bang dcl cho autolisp thi moi viet bang nen cua notepad hay bang visual lisp,  viết bằng cả 2 nền đó thì thấy bất tiện ở chỗ kiểm tra đóng ngoặc, mở ngoặc đó "{  }" và không biết câu lệnh bị sai hay không

ví dụ sai các tù khóa như: column, row, hoac key hay label.......

mong mọi người chỉ giáo

thksssssss...........

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  

×