Đến nội dung


Hình ảnh
* * * * * 3 Bình chọn

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


  • Please log in to reply
32 replies to this topic

#1 KangKung

KangKung

    biết lệnh array

  • Members
  • PipPipPip
  • 189 Bài viết
Điểm đánh giá: 227 (khá)

Đã gửi 14 May 2013 - 11:24 PM

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

http://www.cadviet.c...y-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.c...calculator2.zip

Update ngày 16/05/2013 (xem nội dung Update tại #14) http://www.cadviet.c...alculator_1.zip

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

http://www.cadviet.c...1162_manual.pdf

Similar topics from web:

  • 11

#2 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 15 May 2013 - 12:04 AM

Đúng là Multi ^^


  • 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


#3 Song Nhi

Song Nhi

    biết vẽ rectang

  • Members
  • PipPip
  • 83 Bài viết
Điểm đánh giá: 52 (tàm tạm)

Đã gửi 15 May 2013 - 01:32 AM

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

#4 Polyline

Polyline

    biết lệnh mirror

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

Đã gửi 15 May 2013 - 08:31 AM

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

#5 duy267

duy267

    biết vẽ point

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

Đã gửi 15 May 2013 - 08:50 AM

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


  • 1

#6 Polyline

Polyline

    biết lệnh mirror

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

Đã gửi 15 May 2013 - 08:51 AM

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


  • 1

#7 ThuyLinh313

ThuyLinh313

    biết lệnh mtext

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

Đã gửi 15 May 2013 - 11:22 AM

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


  • 1

#8 KangKung

KangKung

    biết lệnh array

  • Members
  • PipPipPip
  • 189 Bài viết
Điểm đánh giá: 227 (khá)

Đã gửi 15 May 2013 - 04:00 PM

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


  • 1

#9 ThuyLinh313

ThuyLinh313

    biết lệnh mtext

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

Đã gửi 15 May 2013 - 05:03 PM

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


  • 0

#10 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5450 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 15 May 2013 - 06:49 PM

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;


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#11 xaydungit.vn

xaydungit.vn

    biết vẽ arc

  • Members
  • PipPip
  • 48 Bài viết
Điểm đánh giá: 54 (tàm tạm)

Đã gửi 15 May 2013 - 09:39 PM

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.

 

 


  • 0

#12 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 15 May 2013 - 10:44 PM

Chưa load Cal, hỏng cả 1 chương trình :)


  • 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


#13 ThuyLinh313

ThuyLinh313

    biết lệnh mtext

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

Đã gửi 15 May 2013 - 10:56 PM

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


  • 0

#14 KangKung

KangKung

    biết lệnh array

  • Members
  • PipPipPip
  • 189 Bài viết
Điểm đánh giá: 227 (khá)

Đã gửi 16 May 2013 - 12:03 PM

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


  • 0

#15 cd2k44

cd2k44

    Edu level: li5

  • Members
  • PipPipPipPipPipPipPip
  • 648 Bài viết
Điểm đánh giá: 121 (tàm tạm)

Đã gửi 16 May 2013 - 01:48 PM

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

#16 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5450 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 16 May 2013 - 01:57 PM

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.


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#17 ThuyLinh313

ThuyLinh313

    biết lệnh mtext

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

Đã gửi 16 May 2013 - 02:08 PM

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


  • 0

#18 xaydungit.vn

xaydungit.vn

    biết vẽ arc

  • Members
  • PipPip
  • 48 Bài viết
Điểm đánh giá: 54 (tàm tạm)

Đã gửi 16 May 2013 - 02:24 PM

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


  • 0

#19 cd2k44

cd2k44

    Edu level: li5

  • Members
  • PipPipPipPipPipPipPip
  • 648 Bài viết
Điểm đánh giá: 121 (tàm tạm)

Đã gửi 16 May 2013 - 02:32 PM

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

#20 ThuyLinh313

ThuyLinh313

    biết lệnh mtext

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

Đã gửi 16 May 2013 - 02:42 PM

@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


  • 0