Đến nội dung


Hình ảnh

Lấy thông tin của Point


  • Please log in to reply
6 replies to this topic

#1 DesignAutoLisp

DesignAutoLisp

    biết vẽ line

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

Đã gửi 03 July 2014 - 02:50 AM

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 "")
)

 


  • 0

#2 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 03 July 2014 - 07:52 AM

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


  • 0

#3 DesignAutoLisp

DesignAutoLisp

    biết vẽ line

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

Đã gửi 03 July 2014 - 08:49 PM

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.. :)


  • 0

#4 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 03 July 2014 - 09:22 PM

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


  • 0

#5 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 03 July 2014 - 09:24 PM

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

#6 DesignAutoLisp

DesignAutoLisp

    biết vẽ line

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

Đã gửi 03 July 2014 - 10:28 PM

thks cả nhà.............

chúc mọi người buổi tối vve...:)


  • 0

#7 DesignAutoLisp

DesignAutoLisp

    biết vẽ line

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

Đã gửi 03 July 2014 - 11:21 PM

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


  • 0