Đến nội dung


Hình ảnh
- - - - -

CadViet’s AutoLisp Public Functions Library


  • Please log in to reply
38 replies to this topic

#21 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 19 January 2009 - 03:59 PM

Cuối năm, mọi người chắc bận rộn nên có vẻ... im ắng quá? Ssg xin hâm nóng topic này bằng một câu hỏi:

Lisp có thể truy cập data từ file Microsoft Access *.mdb không?

Để biết câu trả lời, mời các bạn tham khảo:

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

Ghi chú:
- Cái này ssg mới sưu tầm trên net, post lên để các bạn cùng "ngâm cứu"
- File ADOLISP_Library.lsp gồm các functions để làm việc với ADO (ActiveX Data Objects)
- File Example1.lsp là ví dụ của tác giả
- File Example2.lsp là thử nghiệm của ssg, lấy data từ file ThepHinh.mdb và gán cho biến Res. Res là một list, bạn muốn làm gì với nó tuỳ ý.
  • 0

#22 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 19 January 2009 - 10:27 PM

Gần tết bận rộn nên nhiệm vụ bác Ssg giao chưa hoàn thành được nhiều.

Đành phải có gì thì post lên cái đó vậy.
2. Hàm về list, string, ss và entity xin được liệt kê trước các tên hàm sau (mã lệnh sẽ chuốt lại và post lên sau):
- (Explode str ex):
Chia chuỗi str thành list các từ được phân cách bởi ex.
Ví dụ (Explode "1 2 3 4" " ") sẽ trả về list ("1" "2" "3" "4")

- (Implode lst ex):
Ngược lại của hàm Explode nối các từ nằm trong list thành một chuỗi.
Ví dụ (Implode '("1" "2" "3" "4")) sẽ trả về chuỗi "1 2 3 4"

- (Pos str sub)
Tìm vị trí của chuỗi sub trong chuỗi str, nếu không tồn tại thì trả về giá trị nil. Vị trí đầu tiên là 1.

- (Replace str search repby)
Tìm trong chuỗi str những cụm từ search và thay bằng repby.

- (ToLow str)
Biến toàn bộ chữ trong chuỗi str thành chữ thường
Ví dụ: (StrToUp "CADViet") sẽ trả về "cadviet".

- (StrToUp str)
Biến toàn bộ chữ trong chuỗi str thành chữ hoa
Ví dụ: (StrToUp "CADViet") sẽ trả về "CADVIET".

- (StrWidth lst)
Xác định chiều rộng thực tế của một đối tượng text. lst là giá trị trả về từ hàm entget.

- (StrHeight lst)
Xác định chiều cao thực tế của một đối tượng text. lst là giá trị trả về từ hàm entget.

- (Strtrans str srclst deslst)
Tìm trong chuỗi str những từ xuất hiện trong srclst và thay nó bằng những từ xuất hiện trong deslst. Hàm này giống hàm Replace nhưng nó làm với một tập hợp các từ.
Ví dụ (Strtrans "abc" '("a" "c") '("x" "y")) sẽ trả về "xby".

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

- (ss2ent ss)
Chuyển tập chọn ss thành tập hợp (list) các đối tượng ename.

- (getattr e)
Trả về tập hợp tất cả các giá trị text thuộc tính của đối tượng block có ename là e.

- (setattr e lst)
Gán tất cả các giá trị text thuộc tính trong block có ename là e với giá trị có trong tập hợp lst. Nếu giá trị nào là nil thì bỏ qua.
  • 0

#23 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 20 January 2009 - 08:19 AM

... Đành phải có gì thì post lên cái đó vậy...


1. Anh Hoành xem lại, những function đã có của lisp không cần lập nữa. Cụ thể:
Pos (đã có vl-string-search)
ToLow, StrtoUp (đã có strcase)

2. Không cần cầu toàn, có cái nào anh cứ post lên (cả code) cái đó, mọi người sẽ cùng hoàn thiện và bổ sung thêm.

3. Ssg bổ sung function xoá các thành phần trùng nhau trong 1 list:
(defun RemDupl (lst)
(if lst (cons (car lst) (RemDupl (vl-remove (car lst) (cdr lst)))))
)

  • 0

#24 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 20 January 2009 - 08:42 AM

Lisp có thể truy cập data từ file Microsoft Access *.mdb không?

Để biết câu trả lời, mời các bạn tham khảo:

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

Ghi chú:
- Cái này ssg mới sưu tầm trên net, post lên để các bạn cùng "ngâm cứu"
- File ADOLISP_Library.lsp gồm các functions để làm việc với ADO (ActiveX Data Objects)
- File Example1.lsp là ví dụ của tác giả
- File Example2.lsp là thử nghiệm của ssg, lấy data từ file ThepHinh.mdb và gán cho biến Res. Res là một list, bạn muốn làm gì với nó tuỳ ý.

Ssg đang còn vướng mắc vài điều:

1. Với *.mdb thì tốt rồi, nhưng ssg đã thử dùng ADOLISP_Library.lsp cho *.xls, thay đổi đủ các kiểu nhưng vẫn chưa được.
Với *.xls, ssg vẫn dùng cái GET_xl sau:


;;;-----------------------------------------------------
(defun rec-rem-dupl (lst)
(if lst (cons (car lst) (rec-rem-dupl (vl-remove (car lst) (cdr lst)))))
)
;;;-----------------------------------------------------
(defun GET_xl (tbl / ADOCONNECT ADORECORDSET LST)
(setq
ADOConnect (vlax-get-or-create-object "ADODB.Connection")
ADORecordset (vlax-get-or-create-object "ADODB.Recordset")
)
(if
(not
(vl-catch-all-error-p
(vl-catch-all-apply
(function vlax-invoke-method)
(list ADOConnect
"Open"
(strcat "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
tbl
";Extended Properties=;Excel 8.0;HDR=No"
)
"admin"
""
nil
)
)
)
)
(progn
(setq
lst (mapcar
(function
(lambda (l / i c)
(vlax-invoke-method
ADORecordset
"Open"
(strcat "SELECT * FROM [" l "]")
ADOConnect
1
3
nil
) ;_ vlax-invoke-method
(setq
i (length
(car
(vlax-safearray->list
(vlax-variant-value
(vlax-invoke-method
ADORecordset
"GetRows"
65535
) ;_ vlax-invoke-method
) ;_ vlax-variant-value
) ;_ vlax-safearray->list
) ;_ car
) ;_ length
) ;_ setq
(vlax-invoke-method ADORecordset "Close")
(while (not (zerop i))
(vlax-invoke-method
ADORecordset
"Open"
(strcat "SELECT * FROM ["
l
"a"
(itoa i)
":IV"
(itoa i)
"]"
)
ADOConnect
1
3
nil
) ;_ vlax-invoke-method
(setq
c (cons
(car
(apply
(function mapcar)
(cons
'list
(mapcar
(function
(lambda (a)
(mapcar
(function
(lambda (b1)
(vlax-variant-value b1)
) ;_ lambda
) ;_ function
a
) ;_ mapcar
) ;_ lambda
) ;_ function
(vlax-safearray->list
(vlax-variant-value
(vlax-invoke-method
ADORecordset
"GetRows"
65535
) ;_ vlax-invoke-method
) ;_ vlax-variant-value
) ;_ vlax-safearray->list
) ;_ mapcar
) ;_ cons
) ;_ apply
) ;_ car
c
) ;_ cons
i (1- i)
) ;_ setq
(vlax-invoke-method ADORecordset "Close")
) ;_ while
(if (equal c '((nil) (nil)))
(list l)
(cons l c)
) ;_ if
) ;_ lambda
) ;_ function
(rec-rem-dupl
(caddr
(mapcar
(function
(lambda (a)
(mapcar
(function vlax-variant-value)
a
) ;_ mapcar
) ;_ lambda
) ;_ function
(vlax-safearray->list
(vlax-variant-value
(vlax-invoke-method
(vlax-invoke-method
ADOConnect
"OpenSchema"
4
) ;_ vlax-invoke-method
"GetRows"
65535
) ;_ vlax-invoke-method
) ;_ vlax-variant-value
) ;_ vlax-safearray->list
) ;_ apply
) ;_ caddr
) ;_ rec-rem-dupl
) ;_ mapcar
) ;_ setq
(vlax-invoke-method ADOConnect "Close")
(vlax-release-object ADORecordset)
(vlax-release-object ADOConnect)
(setq ADORecordset nil
ADOConnect nil
) ;_ setq
lst
) ;_ progn
(progn
(vl-catch-all-apply
'vlax-invoke-method
(list ADOConnect "Close")
) ;_ vl-catch-all-apply
(vlax-release-object ADORecordset)
(vlax-release-object ADOConnect)
(setq ADORecordset nil
ADOConnect nil
) ;_ setq
nil
) ;_ progn
) ;_ if
) ;_ defun
;;;-----------------------------------------------------

Cái này hoạt động tốt, ssg đã thử nghiệm nhiều lần. Tức ở chỗ là chưa tìm được "tiếng nói chung" giữa GET_xl và ADOLISP_Library.lsp!

2. Với ADO, khả năng của Lisp sẽ được mở rộng rất nhiều, giao tiếp được với nhiều phần mềm, môi trường khác nhau, cũng như sử dụng được các tài nguyên của hệ thống (như các file *.dll, *.ocx...). Các bạn tìm hiểu thêm về ADO, có phát hiện gì hay hay thì post lên để anh em cùng học hỏi.

Có bài này về ADO, down từ diễn GiaiPhapExcel của anh PhanTuHuong (xin chân thành cám ơn). Nội dung hợp với "dân VBA" hơn, nhưng có lẽ "dân Lisp" cũng rút tỉa được một số điều bổ ích. Gởi anh em tham khảo:

http://www.cadviet.c...DO_Toan_Tap.zip
  • 0

#25 elleHCSC

elleHCSC

    biết lệnh copy

  • Members
  • PipPipPip
  • 119 Bài viết
Điểm đánh giá: 98 (tàm tạm)

Đã gửi 20 January 2009 - 10:08 AM

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 !
  • 0
Share for all, all will share !

--------------------
HTTP://WWW.HCSC.VN
HTTP://WWW.HCSC.COM.VN

#26 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 21 January 2009 - 09:15 AM

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.c...les/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ạ:

Hình đã gửi

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

#27 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 21 January 2009 - 01:08 PM

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.c...es/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!
  • 3

#28 elleHCSC

elleHCSC

    biết lệnh copy

  • Members
  • PipPipPip
  • 119 Bài viết
Điểm đánh giá: 98 (tàm tạm)

Đã gửi 21 January 2009 - 04:22 PM

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.c...es/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.
  • 0
Share for all, all will share !

--------------------
HTTP://WWW.HCSC.VN
HTTP://WWW.HCSC.COM.VN

#29 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 22 January 2009 - 07:57 AM

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

#30 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 22 January 2009 - 08:22 AM

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:

Hình đã gửi

/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?
  • 0

#31 elleHCSC

elleHCSC

    biết lệnh copy

  • Members
  • PipPipPip
  • 119 Bài viết
Điểm đánh giá: 98 (tàm tạm)

Đã gửi 22 January 2009 - 02:05 PM

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

Hình đã gửi

/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.quantrima...ang_ky_DLL.aspx
hình như /i đại diện cho chữ "install" thì phải.
  • 0
Share for all, all will share !

--------------------
HTTP://WWW.HCSC.VN
HTTP://WWW.HCSC.COM.VN

#32 nataca

nataca

    biết lệnh adcenter

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

Đã gửi 31 January 2009 - 10:54 AM

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 đủ
  • 0

#33 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 07 February 2009 - 08:28 AM

....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à đủ!)
  • 0

#34 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 28 September 2010 - 12:10 AM

Hixx!!!!1 topic hay quá mà lại đi vào dĩ vãng.......
  • 0

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#35 VUVUZELA

VUVUZELA

    biết lệnh chamfer

  • Members
  • PipPipPipPip
  • 210 Bài viết
Điểm đánh giá: 97 (tàm tạm)

Đã gửi 28 September 2010 - 08:31 AM

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

Hệ thống Liên Kết, Thiết Kế Tự Động

ttps://www.facebook...etThietKeTuDong


#36 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5679 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 28 September 2010 - 09:35 AM

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á " ^^
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#37 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 28 September 2010 - 12:36 PM

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

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#38 ngo thi bon

ngo thi bon

    Chưa sử dụng CAD

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

Đã gửi 14 June 2012 - 10:49 AM

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

#39 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5679 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 14 June 2012 - 08:45 PM

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

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC