Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
KangKung

[Đã xong] Multipurpose Calculator : Lisp tính toán trên Cad, xuất kết quả ra bản vẽ, Excel, hoặc Clipboard

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

KangKung    229

Tôi viết Lisp này xuất phát từ ý tưởng của bạn ThuyLinh313 trong Topic

http://www.cadviet.com/forum/topic/71059-da-xong-lisp-calculator-thay-the-cho-may-tinh-cua-cad/

Sau khi đọc xong bài viết của ThuyLinh, thấy ý tưởng hay và ứng dụng tốt nên đã viết code để phục vụ cho công việc của mình. Nay code đã xong, thêm màu mè vào tí và chia sẻ cho anh em CadViet. Ai có nhu cầu thì down về sử dụng. Lisp đang trong quá trình thử nghiệm nên có thể phát sinh lỗi. Ai gặp lỗi xin vui lòng phản hồi để sửa lại code cho hoàn thiện hơn.

Trong Lisp có sử dụng hàm con chuyển số nguyên thành số thực. Bác Hà và bác TueNV test thử xem có lỗi gì không. Thanks các bác.

Đây là giao diện của chương trình + Lisp và hướng dẫn sử dụng.

 

Giao diện chương trình:

71162_muca.jpg

 

Download Lisp tại đây: 

Update ngày 15/05/2013 (xem nội dung Update tại #8) http://www.cadviet.com/upfiles/3/71162_multipurpose_calculator2.zip

Update ngày 16/05/2013 (xem nội dung Update tại #14) http://www.cadviet.com/upfiles/3/71162_mcalculator_1.zip

Và hướng dẫn sử dụng Lisp:

http://www.cadviet.com/upfiles/3/71162_manual.pdf

Similar topics from web:
  • Vote tăng 11

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
Song Nhi    52

Một chương trình đầy đủ và tiện dụng! Cám ơn bác đã có tấm lòng vì anh chị em trên diễn đàn mà chia sẽ một chương trình quá hay và có thể áp dụng vào công việc của mọi ngườ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
Polyline    18

wow.. Một chương trình rất nhiều tính năng (bằng nhiều tiện ích khác cộng lại), có cả phần hướng dẫn sử dụng nữa, cứ như là một phần mềm chuyên nghiệp vậy! Trên các diễn đàn, các bài viết chất lượng như thế này không quá nhiều.

Liệu có thể bổ sung thêm phần cộng trừ nhân chia trên text vào không hả bác KK?

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

Giao diện đẹp quá nhìn rất đồ sộ và công phu, chắc chắn bạn đã mất rất nhiều thời gian về nó. Mình chưa thử nhưng phải thanks bạn một phát đã.

p/s hơi buồn một tí vì bạn đã đóng gói nó thành File fas :D

  • 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
Polyline    18

Lỗi:
- Khi mở hộp thoại, nhấn ESC hay dấu chéo góc trên bên phải thì không đóng được hộp thoại.
- Nhấn nút một nút trong phần "Object Selection" thì xuất hiện lỗi trên dòng command "Error: Unexpected end of expression"


Kiến nghị:
- Trong lần chạy đầu tiên thì lấy số lẻ mặc định của bản vẽ.
- Khi ấn vào nút Text Color thì hiện hộp thoại "Select color" cho phép chọn màu.
- Nút "Quit" quá to và không tương xứng với các phần còn lại, làm mất cân đối giao diện của chương trình.
- Sau khi tải lệnh, chỉ nên hiện dòng nhắc ở phần command mà tránh hiện hộp thoại, vì nếu người dùng add nó khởi động cùng với AutoCAD sẽ gây khó chịu ở mỗi lần khởi động.
- Tên lệnh KK không phù hợp với chức năng của lệnh (dù đây là dấu ấn cá nhân của tác giả).

  • 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
ThuyLinh313    146

Chương trình viết rất gọn gàng, giải quyết được hầu hết các thiếu sót mà Lisp của mình không thể giải quyết được. Mình có 1 vài góp ý cho KangKung để lisp này thân thiện hơn khi sử dụng:

- Sau khi lấy thông tin từ đối tượng trên bản vẽ thì không nên chiếu sáng toàn bộ Input box, nên đặt con trỏ vào cuối Input box để tiện cho người dùng nhập dữ liệu tính toán tiếp. đỡ được 1 thao tác đặt chuột hoặc phải bấm phím right.

- Thiếu chức năng gán kết quả vào text có sẵn. Chức năng này dùng nhiều hơn rất nhiều so với việc tạo 1 text mới

- Dùng 2 ký tự viết tắt "BS" không tạo cảm giác tốt bằng 1 mũi tên "<-" Mình thấy các máy tính bỏ túi hay dùng kí hiệu này

- Hàng phím M, MR, CE, BS đặt không hợp lý lắm. Thông thường, các phím này được bố trí lên phía trên

- Bạn chưa tận dụng được hết ưu điểm của việc tính toán thông qua giao diện UI. Theo mình thì có thể bổ xung thêm các phím chức năng khác mà các máy tính f(x) có như bình phương, khai căn, lũy thừa... Tất nhiên mình biết làm điều đó không dễ nhưng nếu mà làm được thế thì rất tuyệt vời

 

PS: Ý tưởng dùng thanh trượt để chọn màu sắc của bạn rất hay. Ý tưởng này còn sử dụng được vào nhiều việc khác nữa để tiện nhập dữ liệu hơn. mình rất thích! Tuy nhiên trong trường hợp này khi kéo thanh trượt, màu sắc trong image không đổi tức thời. Action của image bạn nên dùng để gọi hộp thoại chọn màu sắc thì hay hơn một thông báo vô nghĩa như thế.

  • 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
KangKung    229

Cảm ơn những chia sẽ của các bạn đặc biệt là Polyline và ThuyLinh. Mình sẽ cập nhật tiếp các bản tiếp theo tại bài đầu tiên (#1)

@ Duy267: Lisp đang trong quá trình hoàn thiện nên mình post file fas để mong nhận được nhiều sự đóng góp hơn.

@ Polyline: - Lệnh đã được sửa lại thành CA là viết tắt của từ Calculator.

                   - Đã bỏ chế độ thông báo bằng hộp thoại mỗi khi Load Lisp.

                  - Lỗi "Error: Unexpected end of expression" không ảnh hưởng gì đến chương trình ngoài việc gây khó chịu cho người sử dụng, lỗi này xuất hiện khi nội dung trong phần Input Box để trắng hoặc không thỏa mãn lệnh Cal của AutoCAD.

                   - Đã thêm code để tắt hộp thoại bằng phím ESC hoặc dấu chéo trên hộp thoại

@ ThuyLinh: - Việc thay thế phím BS thành phím mũi tên cũng hay, nó biểu diễn trực quan hơn. 

                     - Đặt hàng phím chức năng M+, MR, ... lên trên chỉ là hình thức thôi, tuy nhiên mình sẽ thay đổi.

                     - Các phím chức năng giống như máy tính FX mình đã làm ngay từ khi bắt đầu viết Lisp này rồi, đa số các phím này có nhiều kí tự nên khi mở hộp thoại trên Cad2008 nó bị bung ra nhìn rất tức mắt nên mình đã bỏ các phím này đi. (thực tế trong Lisp trên vẫn còn hàm của các phím đó nhưng không hiển thị trên hộp thoại)

                     - Action của Image của mình không nhằm mục đích hiển thị thông tin màu vô nghĩa như bạn nói đâu. Do đang bí code đặt màu vào trong Popup List (giống như menu của Cad) nên mới tạm hiện cái dòng thông báo như vậy.

Đây là hình ảnh của phần Calculator khi mới viết code:

Trên Cad2004

71162_muca2.jpg

Còn đây là trên Cad2008 (chính vì lý do này mà mình đã loại một số phím chức năng đi)

71162_muca3.jpg

  • 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
ThuyLinh313    146

Lại là vấn đề này, bực nhỉ! vậy thì bạn tăng kích thước của các nút lên 1 chút thử xem thế nào. mình nghĩ chắc là được. 

về màu. bạn sử dụng hàm acad_colordlg đi. hàm này gọi hộp thoại lựa màu của Cad đó.

Tên lệnh: Có cái tên ngon lành thì mình lấy mất rồi nhỉ ^^ cái này hơi khó chiều trăm họ, đặt ngắn gọn quá thì có thể có nguy cơ đè lên 1 lệnh tắt của người dùng rất cao. Mình nghĩ là bạn cứ đặt tên dài dài 1 chút, MCalculator chẳng hạn. rồi người dùng tải về muốn đặt thế nào tùy họ. Bạn chỉ cần hướng dẫn thêm cách đặt lệnh tắt:

(defun c:abc () (c:MCalculator) (princ))

 

Thêm ý kiến nữa (cái này là quan điểm cá nhân thui nhé): Mình thấy cái hình mặt cười cho vào khiến cho chương trình giảm đi 1 phần giá trị. hơi xì tin bạn ạ. Nếu mình là bạn, mình sẽ bỏ nó hoặc thay nó bằng 1 cái logo của mình hoặc công ty, hoặc đơn giản là 1 dòng chữ copyright đánh dấu bản quyề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
Doan Van Ha    2.676

Góp ý cho bạn Kangkung:

A. Khen:

Dialog đẹp, công phu, nhiều tiện ích hay. Đáp ứng hầu như đầy đủ các mong muốn của người dùng.

B. Chưa khen:

Bẫy lỗi chưa hoàn chỉnh. Các ví dụ:

1). Ở edit_box "Text Height": nhập -5 hay a5 hay 5a đều OK cả.

2). Ở edit_box "Text Color": cũng tương tự

Riêng ở việc chọn màu bạn nên dùng hàm mà TL đề nghị. Nó vừa trực qua, vừa tự bẫy lỗi, đồng thời không gây ức chế như thanh trượt.

3). Ở edit_box "Input box": bị lỗi quan trọng ở chữ "E", do "E" này liên quan tới số mũ. Ví dụ nhập:

E >> 0

5E >> 5

5E5 >> exit luôn.

Thêm: trường hợp các button nở ra thì bạn có thể thu hẹp các khoảng cách khác xuống >> dialog có thể giảm kích thước khoảng 5-10%, bằng thuộc tính dưới đây nếu bạn muốn:

horizontal_margin = none;

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
xaydungit.vn    54
Mình thử trên AutoCAD 2013 thì báo không nhận lệnh
Command: ap
APPLOAD Multipurpose Calculator.fas successfully loaded.
Command:
                By KangKung - 15/05/2013
             Nhap CA de chay chuong trinh
; error: ARXLOAD failed
Command:
Command: ca
Unknown command "CA".  Press F1 for help.

Mình sử dụng AutoCAD 2013 - Không ý góp được :)

 

Command: ap
APPLOAD Multipurpose Calculator.fas successfully loaded.
Command:
                By KangKung - 15/05/2013
             Nhap CA de chay chuong trinh
; error: ARXLOAD failed
Command:
Command: ca
Unknown command "CA".  Press F1 for help.

 

 

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
ThuyLinh313    146

Lỗi này hình như do Cad2013 đã được tích hợp hàm Cal vào luôn chứ không phải tải vào bang 1 Arx ngoài nữa. Chắc KK đã để hàm load ARX ngay đầu lisp. lỗi phát out luôn :D

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
KangKung    229

Sorry cả nhà vì sự chậm trễ. Từ hôm qua tới giờ bận việc, giờ mới rảnh để post bài mới.

Cảm ơn ThuyLinh và bác DVH đã tư vấn và Test lỗi. Lisp mới đã khắc phục một số lỗi như sau: (Download link # 1)

 

1). Ở edit_box "Text Height": Chỉ nhập được số >0. Nếu nhập số âm hoặc chữ thì sẽ hiện hộp thoại thông báo

 
 

2). Ở edit_box "Text Color": Chỉ nhập được số nguyên từ 0-256

3). Đã fix lỗi chữ E ở edit_box "Input box".

4). Thay thay trượt bằng Image hiện hộp thoại chọn màu của Cad

5). Thêm nút thay thế Text có sẵn trên bản vẽ. Có thể quét chọn để thay hàng loạt Text, Mtext. Sau khi thay thế, Text sẽ đổi màu như màu đã chọn. Các thuộc tính khác không đổi.

6). Trong lần chạy đầu tiên, độ chính xác mặc định theo độ chính xác của bản vẽ. (Đã thay đổi trong Lisp hôm qua nhưng chưa nói  :) )

7). Nếu Cad2013 tích hợp sẵn chức năng Cal mà không cần phải Load Arx như ThuyLinh nói thì có thể Lisp này vẫn chạy tốt (không có Cad2013 để Test) vì đã di chuyển hàm Loadarx xuống cuối cùng. Bác nào có Cad13 Test thử cái.

8). Thêm hatch để đánh dấu khi tính diện tích bằng cách Pick điểm. Xóa hatch sau khi hiện lại hộp thoại

71162_muca4.jpg

PS: Version tiếp theo sẽ thêm chức năng:

a, vẽ hình chữ nhật và wipeout bao quanh Text. Code đã xong nhưng đang khó về việc bố trí nút trên Dialog

b, Thêm nút tính diện tích Hatch

c, đang cân nhắc việc có đưa thêm các nút khai căn, lũy thừa vào phần máy tính. Tuy nhiên khi Test thử trên Cad2008 thì vẫn không khả quan. Giao diện xấu kinh khủng. Khi tăng độ rộng của các nút để tất cả bằng nhau thì Dialog lại rộng quá và phím số nhìn mất cân đối. Đang tính đến khả năng chỉ đặt 3 phím chức năng trên 1 hàng, còn phím số thì 4 số trên 1 hàng.

Mong các bác tiếp tục góp ý.  :D  :D  :D

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
cd2k44    121

Bạn KangKung ơi.Khi mình tính diện tích bạn cho nhập thêm tỷ lệ vẽ vào nữa.Đôi khi vẽ kích thước 1/1 đôi khi lại 1/1000

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
Doan Van Ha    2.676

KK coi lại code xem: bản đầu tiên thì test được, 2 bản sửa sau này cứ gọi CA, xuất hiện dialog là treo cad luôn. Vì code đang ở fas nên mình không thể biết lý do, vì vậy không thể test thêm để góp ý được.

Cad2007, Win8 64bit.

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
ThuyLinh313    146

@KK:

a, Mình nghĩ không cần thiết, chương trình này mục đính để tính toán. Những chức năng khác nên để cho các công cụ khác đảm nhận bạn ạ. Kinh nghiệm của mình khi thiết kế các chương trình: Càng đơn giản càng tốt, càng ít bước càng tốt, càng ít phải nhập liệu càng tốt. những chương trình ôm đồm quá nhiều việc rất dễ bị người dùng lãng quên.

 

b, Không rõ bạn dùng cách nào để "Get Area", mình cứ tưởng nó cho phép chọn Hatch rồi mà hóa ra không phải.

Không cần thiết phải bổ sung nút tính diện tích hatch. bạn chỉ cần sửa lại bộ lọc chọn đối tượng và sử dụng hàm này: (vla-get-area (vlax-ename->vla-object ename))

Nó có thể lấy được thông tin area của mọi đối tượng nếu có.

 

c, Khai căn thì bạn có thể dùng ký tự này "\U+221A" thay cho "Sqrt" mình nghĩ là chấp nhận được.

Bình phương thì dùng "x\U+00B2"

Lập phương "x\U+00B3"

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
xaydungit.vn    54
Command: ap
APPLOAD Multipurpose Calculator.fas successfully loaded.
Command:
                By KangKung - 15/05/2013
             Nhap CA de chay chuong trinh
; error: ARXLOAD failed

 

Tét trên AutoCAD 2013 (Bản Update 16.5.2013) :)

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
cd2k44    121

Khi chọn pick điểm lấy diện tích, mình nên bổ sung thêm chức năng hatch vùng tính để có cái nhìn trực quan hơn, sau đó thì nó tự xóa đi.Mình thấy các lisp tính diện tích thường có dạng 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
ThuyLinh313    146

@xaydung.it: bạn cứ kệ nó, chạy thử lệnh CA xem thế nào. mình nghĩ chắc là được chứ nhỉ

@KK. Nếu không được thì tốt nhất là bạn thêm hàm kiểm tra version cad vào để loại bỏ triệt để lỗi này. Biến hệ thống acadver

Bản update ngày 16.5 gõ CA phát treo luô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
KangKung    229

@ThuyLinh: Mình cũng dùng các hàm vla để lấy thông tin đối tượng tuy nhiên với Cad2004 thì không có thuộc tính area của Hatch. Hàm này chỉ áp dụng từ Cad2005 hoặc 2007 trở lên thì phải (Test trên Cad 2008 thì được)

@Bác ĐVH: Inbox file .lsp vào hòm thư cho bác nghiên cứu để tìm ra lỗi nhé. Không dùng Win8 nên chưa biết bệnh gì.

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
Doan Van Ha    2.676

1). Dùng biện pháp cũ chuối này thì khỏi sợ tương lai, đó thêm dòng code này vào đầu lisp, thay vì dùng arxload:

(command "cal" "1+2")

2). KK coi lỗi gì mà máy mình load xong, gọi CA và xuất hiện dialog xong thì treo cad luô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
Doan Van Ha    2.676

Nhờ có lsp và nhờ máy ở nhà có cad2013 nên tôi đã test cho bạn, và quả đúng là:

Command: (arxload "geomcal.arx")
; error: ARXLOAD failed

Cad2007 thì OK

Đề nghị 1 trong 2 cách sửa lỗi:

1). Dùng cái này (tức là cắt đuôi .arx đi):

(or cal (arxload "geomcal"))

Cái trên hay hơn cái này:

(arxload "geomcal")

2). Treo củ chuối này ở đầu hoặc cuối lisp:

(command "cal" "1")

Sẽ nghiên cứu thêm để góp ý giùm 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
KangKung    229

Đã Test rồi bác ạ. (command "cal" "1") không chạy được với Cad2004 còn Cad2008 thì được

Phương án thay thế: (C:cal "1+2") chạy được trên cả Cad2004 và 2008.

Lisp mới sửa đây bác xaydungit.vn hoặc bác nào nhà có điều kiện Test thử trên các loại Cad giúp xem có vấn đề gì không. Thanks

http://www.cadviet.com/upfiles/3/71162_mcalculator_2.zip

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  

×