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

CadViet’s AutoLisp Public Functions Library

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

Cái này hay đấy, elle đang cần có cái VD về "Call external funtion" từ 1 file OCX hoặc DLL mà...để ngâm xem có dùng được gì không !

Bạn thử làm theo cái này xem:

http://www.cadviet.com/upfiles/DLL_LSP.zip

 

Ssg đã làm theo hướng dẫn trên, tạo một form nhập số liệu bằng VB, Make *.dll và gọi được nó bằng lisp. Hình minh hoạ:

 

VeDTron.jpg

 

Chưa post lên được vì đang còn vướng một chút: chạy rất OK trên máy mình nhưng chép sang máy khác thì Error! Lâu nay ssg ít dùng VB, trên máy vẫn còn cái VB5 cổ lỗ, mà hình như nó cũng bị lỗi gì đó. Hôm nào mình cài lại bản VB6 sẽ thử lại.

  • Vote tăng 1

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
Chưa post lên được vì đang còn vướng một chút: chạy rất OK trên máy mình nhưng chép sang máy khác thì Error!

Có "thuốc" rồi! Bạn thử giải nén, đọc readme, thử nghiệm và cho ssg biết kết quả (để khẳng định là "thuốc" có hiệu nghiệm trong mọi trường hợp):

 

http://www.cadviet.com/upfiles/Call_DLL.zip

 

File *.pdf kèm theo ssg vừa sưu tầm được, rất hữu ích cho dân "Lisp Developer". Ssg chưa bao giờ được đọc một tài liệu Lisp hay như vậy!

  • Vote tăng 3

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
Có "thuốc" rồi! Bạn thử giải nén, đọc readme, thử nghiệm và cho ssg biết kết quả (để khẳng định là "thuốc" có hiệu nghiệm trong mọi trường hợp):

 

http://www.cadviet.com/upfiles/Call_DLL.zip

 

File *.pdf kèm theo ssg vừa sưu tầm được, rất hữu ích cho dân "Lisp Developer". Ssg chưa bao giờ được đọc một tài liệu Lisp hay như vậy!

 

Ồ chắc chắn là chạy với mọi trường hơp mà, elle chưa thử nhưng chỉ cần thấy ssg nhét cái lệnh RegSVR32.exe vào là OK. Các file ocx hay Dll dạng activeX thì bắt buộc phải đăng ký với windows với lệnh RegSVR32.exe thì mới chạy được. Ssg copy sang máy khác mà ko Reg cái ActiveX thì nó ko chạy là phải. Thông thường khi một app mà có sử dụng các hàm từ một thư viện bên ngoài dạng ActiveX (*.OCX, DLL...) thì khi tạo chương trình setup thì tác giả thường cho thực hiện cosole : RegSVR32.exe /s "activeX filename". Khi uninstall nó thì thực lệnh: RegSVR32.exe /u /s "activeX filename". Tại dòng lệnh start\Run của windows cứ gõ lệnh RegSVR32 /? để tìm hiểu thêm về cái lệnh này.

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
C- TRÌNH TỰ TIẾN HÀNH

Ý kiến anh Hoành rất hợp lý, nên đưa ra cái tổng quát trước, chi tiết cụ thể tính sau. Tuy nhiên, ssg thấy thế này, mỗi function đều có tính độc lập riêng của nó. Ta vẫn có thể đưa ra functions trước, hệ thống hoá sau cũng chẳng hề gì. Ssg đề nghị thực hiện luôn 2 hướng cùng lúc:

 

1. Các bạn có những functions nào hay, đặc sắc, mang tính tổng quát cao, có công dụng rộng cứ nêu lên. Anh em cùng phân tích, mổ xẻ sẽ hào hứng hơn.

 

2. Việc soạn một cái list tổng thể, có lẽ trước hết nên do một vài người đảm nhiệm. Khi đã thấy tạm ổn sẽ đưa lên cho bá quan thiên hạ góp ý, bổ sung. Cụ thể, ssg đề nghị các thành viên sau vào "Ban biên tập":

- Ssg (đương nhiên, vì đã... trót đề xướng ra cái topic này!)

- Nataca (cũng đương nhiên, vì là người xung phong đầu tiên!)

- Anh Hoành (cũng đương nhiên, vì là người "đứng mũi chịu sào" của diễn đàn Lisp nói riêng và CadViet nói chung!)

- Nộ Thiên (đã có "bề dày kinh nghiệm" với Lisp, không dám nói đương nhiên, tuỳ ý riêng của bạn thôi)

Nếu các thành viên có tên trên không phản đối, tức là... đương nhiên đồng ý!

Như đã nói, khi đề nghị thành viên Ban biên tập, ssg căn cứ vào những người đã có ý kiến reply cho topic. Những người khác, ssg chưa dám đề cập vì chưa rõ... ý tứ các bạn thế nào. Tuy nhiên, ssg vẫn biết trong diễn đàn của chúng ta còn có rất nhiều người am hiểu và có tâm huyết với Lisp. Nếu các bạn cảm thấy có thể đóng góp được chút gì đó cho topic thì xung phong. Ssg nhiệt liệt hoan nghênh!

Tại thời điểm ssg viết những dòng này, bạn gia_bach cũng đang xem topic. Bạn có thể tham gia cùng anh em trong Ban biên tập được không? Hay là bạn có vài ý kiến gì đó cho topic này?

Cám ơn bạ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
Thông thường khi một app mà có sử dụng các hàm từ một thư viện bên ngoài dạng ActiveX (*.OCX, DLL...) thì khi tạo chương trình setup thì tác giả thường cho thực hiện cosole : RegSVR32.exe /s "activeX filename". Khi uninstall nó thì thực lệnh: RegSVR32.exe /u /s "activeX filename". Tại dòng lệnh start\Run của windows cứ gõ lệnh RegSVR32 /? để tìm hiểu thêm về cái lệnh này.

Cám ơn bạn, nó đây:

 

reg_dll.jpg

 

/u /s thì hiểu rồi, nhưng /i và /n chưa thông lắm. Bạn có thể giải thích rõ hơn không?

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
Cám ơn bạn, nó đây:

 

reg_dll.jpg

 

/u /s thì hiểu rồi, nhưng /i và /n chưa thông lắm. Bạn có thể giải thích rõ hơn không?

 

Thực tế elle cũng biết và hay dùng có 2 tham số là /u /s nếu muốn Unistall một activex Dll còn nếu muốn install thì cứ gõ thẳng Regsrv32.exe dllname là xong. Ssg xem thêm ở đây: http://www.quantrimang.com.vn/hethong/thu-...ang_ky_DLL.aspx

hình như /i đại diện cho chữ "install" thì phải.

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

Xin khởi động cho 1 năm bằng các hàm con hỗ trợ nhập-xuất dữ liệu:

 

*Nhập dữ liệu:

 

-Đầu tiên là chọn-lọc đối tượng kèm theo dòng nhắc hướng dẫn chọn đối tượng (không bắt buộc phải chọn-ấn enter để bỏ qua). Tiền tố là S (select)

 

1. Chọn text: SText

2. Chọn Mtext: SMtext

3. Chọn Text và Mtext: STexts

4. Chọn số thực: SReal

5. Chọn số nguyên: SInt

6. Chọn điểm: SPoint

7. Chọn Dimention: SDim

....(nhiều lắm, đôi khi là chọn gồm số thực và Dimention chẳng hạn vậy nên ta có thêm 1 hàm tổng quát nữa là:

8. Chọn đối tượng tổng quát: (SEnt "liệt kê tên loại đối tượng cần chọn ở đây (nếu nil là tất cả đối tượng)")

 

- Tiếp theo cũng là chọn - lọc đối tượng nhưng bắt buộc phải chọn (nếu không chọn hoặc không chọn đúng thì chương trình sẽ không cho chạy tiếp bước tiếp theo). Tiền tố là ES (Exactly -Enforce Select)

 

1. Chọn text (bắt buộc): ESText

....Các hàm khác tương tự với hàm chọn không bắt buộc

 

-Nhập vào từ bàn phím (ấn enter để bỏ qua và lấy giá trị mặc định hoặc lưu số đã nhập lần trước). Tiền tố là I (Import)

 

1. Nhập từ khóa (key): IKey

2. Nhập giá trị là số thực: (IReal "nếu là nil thì không bao gồm số 0, nếu là 0 thì bao gồm cả số 0")

3. Nhập giá trị là số nguyên: (IInt "nếu là nil thì không bao gồm số 0, nếu là 0 thì bao gồm cả số 0")

4. Nhập một file: IFile

 

*Xuất dữ liệu:

 

- Sửa kết quả (thay giá trị cũ bằng giá trị mới). Tiền tố là R (repair)

 

1. Sửa kết quả cho ra số thực với chữ số phần thập phân tự chọn: RReal

2. Sửa kết quả cho ra số nguyên (hoặc tự làm tròn để ra số nguyên): RInt

3. Sửa kết quả cho ra số thực với chữ số thập phân tự chọn và thêm dấu + hoặc - phía trước: RReal+

4. Sửa kết quả (pick vào đối tượng chứ không quét qua đối tượng để sửa các đối tượng thuộc tính): như 3 cái trên nhưng thêm tiền tố RP chứ không phải là R

5. Sửa kết quả của 1 file: RFile

 

- Xuất kết quả (ra màn hình cad-chủ yếu là giá trị ). Tiền tố là EX (Export)

 

1. Xuất kết quả là text tự mặc định chiều cao text theo giá trị text lớn hay nhỏ: EXTexts

2. Xuất kết quả là text với Text mẫu đã có sẵn trên bản vẽ: EXText

3. Xuất kết quả là text với thông số đưa vào: EXTextUser

4. Xuất kết quả ra thành file: EXFile

5. Xuất kết quả ra thành file đã xắp xếp kết quả theo thứ tự hàng: EXFileR

6. Xuất kết quả ra thành file đã xắp xếp kết quả theo thứ tự cột: EXFileC

 

....Còn nữa mong mọi người sửa đổi và bổ sung cho hợp lý và đầy đủ

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
....Còn nữa mong mọi người sửa đổi và bổ sung cho hợp lý và đầy đủ

Từng ấy cũng đã kha khá rồi, bạn post code lên đi. Anh em sẽ có hình dung cụ thể hơn và góp ý để hoàn thiện. Những cái còn thiếu sẽ bổ sung sau (chẳng biết bao nhiêu là đủ!)

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

Mặc dù đã nhiều năm lập trình AutoLisp nhưng sau khi đọc bài thì cảm thấy rằng bài viết rất hay

Và cũng nhận ra rằng trên diễn đàn CadViet có rất nhiều cao thủ với khả năng lập trình rất PRO và có rất nhiều thuật toán hay, ngắn gọn

Đáng phải học hỏi

Khâm phục, khâm phụ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

Nhưng chưa chi tiết và mang tính quần chúng rộng rãi ^^ 1 dự án trở thành nơi các anh tài tụ họp và trao đổi của các anh tài,thì các bạn chưa thực sự pro lắm chỉ biết đọc và chẹp lưỡi :"cao siêu quá " ^^

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

Mình cũng có viết 1 hàm con để sửa hàng loạt các DXF

Gọi:(exec ss dxf newvalue)

ss: tập chọn

dxf: mã dxf

newvalue: giá trị mới cần thay thế

 

(defun exec (ss dxf chdxf)
(setq i 0)
(while (< i (sslength ss)) 
	(setq name_ss (ssname ss i)) 
	(entmod (subst (cons dxf chdxf) (assoc dxf (entget name_ss)) (entget name_ss)))
	(setq i (1+ i))
)
)

 

Khi đã load hàm con này thì líp rất ngắn:

 

VD: Líp thay đổi chiều cao text hàng loạt trong tập chọn ss

 

(defun c:rot(/ name_ss chdxf ma ss i dxf newrad)
 (setq ss (ssget '((0 . "*text")))
	   newhig (getreal "\nNhap chieu cao moi: ")
 )
(exec ss 40 newhig)
)

 

Mình cũng xin hỏi bạn nào đã viết code cho hàm con như :

 

- (exec func ss)

Gọi hàm func lần lượt với tất cả các ename trong tập chọn ss. Kết quả trả về tổng tất cả các giá trị mà hàm func trả về.

Ví dụ: (exec '(lambda(e) (command ".area" "o" e)) ss) sẽ trả về tổng diện tích của tất cả các đối tượng trong tập chọn ss.

thì share cho mình với.hehhe

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

h minh ko biet j ve lap trinh ca minh chi hoc ben xay dung, minh co the hoc lisp duoc ko cac ban

Minh phai bat dau tu dau,minh daw may file ve ma ko biet su dung

Bắt đầu từ Unicode bạ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  

×