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

Hỏi về hàm open

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

Return Values

 

If successful, open returns a file descriptor that can be used by the other I/O functions. If mode "r" is specified and filename does not exist, open returns nil.

 

Em không hiểu ở đây file descriptor là cái gì ạ , thấy trong ví dụ của AutoCAD có cái đại loại như :

# file < "c:\\my documents\\new.tst" >

Thế cái này có giống như address của file kô ạ ?

I/O functions có phải là Input/Output files không ạ ?

 

E còn một câu hỏi nữa là làm sao khi dùng ssget để select a line, thì sau đó ta sẽ biết được start point và end point của line được chọn ạ ?

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
Em không hiểu ở đây file descriptor là cái gì ạ , thấy trong ví dụ của AutoCAD có cái đại loại như :

Thế cái này có giống như address của file kô ạ ?

I/O functions có phải là Input/Output files không ạ ?

 

E còn một câu hỏi nữa là làm sao khi dùng ssget để select a line, thì sau đó ta sẽ biết được start point và end point của line được chọn ạ ?

khi dùng ssget để chọn line thì bạn dùng cú pháp này

(setq ss (ssget '(

(-4 . "

(0 . "LINE")

(-4 . "AND>")

)

)

)

sau đó dùng lệnh repeat để tách ra từng line

(setq x 0)

(setq caochu 5.00)

 

(repeat (sslength ss)

(setq ent (ssname ss x))

(setq ents (entget ent))

(setq pt1 (cdr (assoc 10 ents)))

(setq pt2 (cdr (assoc 11 ents)))

;;;từ đây bạn có thể viết tiếp để in ra điểm đầu, cuối của line

(setq x (+ x 1))

)

Keke

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
Em không hiểu ở đây file descriptor là cái gì ạ , thấy trong ví dụ của AutoCAD có cái đại loại như :

Thế cái này có giống như address của file kô ạ ?

I/O functions có phải là Input/Output files không ạ ?

 

E còn một câu hỏi nữa là làm sao khi dùng ssget để select a line, thì sau đó ta sẽ biết được start point và end point của line được chọn ạ ?

Bạn đọc thêm đoạn này sẽ sáng tỏ hơn:

A file descriptor is a pointer to a file opened by the AutoLISP open function. The open function returns this pointer as an alphanumeric label. You supply the file descriptor as an argument to other AutoLISP functions that read or write to the file.

 

Đúng như bạn nhận định, pointer là biến con trỏ. Khi bạn gọi đến nó, nó sẽ... "chỉ trỏ" vào file address.

I/O functions ám chỉ các hàm dùng để read or write to the file

Hiểu vậy đủ rồi, chẳng cần đi sâu hơn. Vấn đề là áp dụng nó, bạn vận dụng open file, read from file, write to file... với những số liệu cụ thể. Qua đó, bạn sẽ tự chiêm nghiệm vấn đề sâu sắc hơn cả ngàn lời giải thích.

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 ssget để chọn line thì bạn dùng cú pháp này

(setq ss (ssget '(

(-4 . "

(0 . "LINE")

(-4 . "AND>")

)

)

)

sau đó dùng lệnh repeat để tách ra từng line

(setq x 0)

(setq caochu 5.00)

 

(repeat (sslength ss)

(setq ent (ssname ss x))

(setq ents (entget ent))

(setq pt1 (cdr (assoc 10 ents)))

(setq pt2 (cdr (assoc 11 ents)))

;;;từ đây bạn có thể viết tiếp để in ra điểm đầu, cuối của line

(setq x (+ x 1))

)

Keke

Sao phải lằng nhằng vậy bạn?

1- ssget chọn line chỉ cần: (ssget '((0 . "LINE")))

2- (setq caochu 5.00) không có vai trò gì trong việc này!

 

@pdle

Nếu chỉ chọn 1 line, bạn dùng (car (entsel "\nSelect a line:")) thì hơn

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  

×