Đến nội dung


Hình ảnh
- - - - -

Kết hợp Excel-AutoLisp-AutoCAD


  • Please log in to reply
60 replies to this topic

#1 caothang

caothang

    biết pan

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

Đã gửi 30 October 2008 - 06:46 PM

Chào các Anh/Chị ,
công việc của em là detailer, vì thế có những việc mà Em phải làm lập đi lập lại nhiều lần .
không biết rằng lisp có thể hỗ trợ cho Em với yêu cầu sau đây không , nếu có nhờ A/C giúp đỡ
nếu đã có người viết rồi thì cho E xin link.
( có vào mục viết lisp theo yêu cầu mà nhiều trang quá tìm chưa ra )
thanks

Yêu cầu của Em như sau :
- lấy thông tin từ excel tự động nhập vào cad tại những vị trí có tọa độ xác định.

- ví dụ : em cần phải đục lỗ bắt bulong cho 1 thanh sắt có chiều dài L
vị trí lỗ này cách lỗ kia là theo tính toán bằng excel

---> theo thiết kế thì em có được chiều dài L
theo chiều dài L , em phải tính toán ra vị trí cần có lỗ theo tiêu chuẩn
khi có vị trí các lỗ , em phải nhập vào cad, để in ra cho xưởng chế tạo ,
( trong cad Em có vẽ 1 thanh sắt và các lỗ tượng trưng không cần chính xác ,
vị trí các lỗ sau khi tính đưa vào phải chính xác )
với những job lớn Em phải làm việc này rất nhiều lần ( trên 1000 lần)
em có vẽ hình đễ các A/C xem thử :
em có 1 file cad chưa có số và cần lấy số từ excel(sau khi tính toán cộng, trừ ) , để có hình như sau ( chỉ được thay đổi số và phài theo font quy định)

Hình đã gửi

có cách nào giúp em làm việc này nhanh hơn xin chỉ giúp,
em mới đi làm chưa có kinh nghiệm nhiều về cad
rất mong được giúp đỡ

thanks
  • 0

#2 Flex

Flex

    biết lệnh erase

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

Đã gửi 30 October 2008 - 09:21 PM

Chào các Anh/Chị ,
công việc của em là detailer, vì thế có những việc mà Em phải làm lập đi lập lại nhiều lần .
không biết rằng lisp có thể hỗ trợ cho Em với yêu cầu sau đây không , nếu có nhờ A/C giúp đỡ
nếu đã có người viết rồi thì cho E xin link.
( có vào mục viết lisp theo yêu cầu mà nhiều trang quá tìm chưa ra )
thanks

Yêu cầu của Em như sau :
- lấy thông tin từ excel tự động nhập vào cad tại những vị trí có tọa độ xác định.

- ví dụ : em cần phải đục lỗ bắt bulong cho 1 thanh sắt có chiều dài L
vị trí lỗ này cách lỗ kia là theo tính toán bằng excel

---> theo thiết kế thì em có được chiều dài L
theo chiều dài L , em phải tính toán ra vị trí cần có lỗ theo tiêu chuẩn
khi có vị trí các lỗ , em phải nhập vào cad, để in ra cho xưởng chế tạo ,
( trong cad Em có vẽ 1 thanh sắt và các lỗ tượng trưng không cần chính xác ,
vị trí các lỗ sau khi tính đưa vào phải chính xác )
với những job lớn Em phải làm việc này rất nhiều lần ( trên 1000 lần)
em có vẽ hình đễ các A/C xem thử :
em có 1 file cad chưa có số và cần lấy số từ excel(sau khi tính toán cộng, trừ ) , để có hình như sau ( chỉ được thay đổi số và phài theo font quy định)

Hình đã gửi

có cách nào giúp em làm việc này nhanh hơn xin chỉ giúp,
em mới đi làm chưa có kinh nghiệm nhiều về cad
rất mong được giúp đỡ

thanks


Nhìn cái bản vẽ này thì không phải là bản vẽ chế tạo (nhưng vẫn gia công được). Tuy nhiên nếu công việc nhiều thì cũng nên viết chương trình tính và thống kê cho nhanh. Nếu bác không tìm thấy tool đã có sẵn và có nhã ý làm thì liên hệ với em theo thông tin bên dưới.
  • 0
Phần mềm và Tiện ích trên AutoCAD
->SHD- Phần mềm TK nhà xưởng thép tiền chế
->Nhận hợp tác thiết kế nhà thép tiền chế
website: www.cad-app.com
email: flexnet@cad-app.com
ym: flex_tools

#3 Nộ Thiên

Nộ Thiên

    biết lệnh ddedit

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

Đã gửi 30 October 2008 - 09:55 PM

Là 1 bản vẽ mà kg đc sử dụng như 1 "bản vẽ",thì thà in trực tiếp từ cái bảng excel còn hơn. Đó là góp ý về phần công việc của Bác.
Với Bác Hoành thì việc bạn nhờ là kg khó, nhưng Bác phải đưa file excel và file cad tương ứng lên mới đc.
  • 0

#4 caothang

caothang

    biết pan

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

Đã gửi 30 October 2008 - 10:08 PM

em đang rất cần các anh/chị giúp với

thanks

*****
Đây chỉ là bản vẽ để các Anh/Chỉ hiểu ý em
và Em cũng chỉ muốn thay đổi mấy con số đó thôi

Bản vẻ đầy đủ thì có thêm thông tin, loại thép, khả năng chịu lực, và các kích thước khác
nhưng mấy cái đó thì em tạo mẩu sẳn rồi chỉ copy là xong, còn điền mấy con số sau khi tính là rất nhiều và cần chính xác
vì có lúc chuyển từ excel do làm nhiều và chưa quen nên em nhập nhầm hoài.

cố gắng giúp em nhe

thanks
  • 0

#5 caothang

caothang

    biết pan

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

Đã gửi 30 October 2008 - 11:11 PM

Đây là 2 file excel và cad
các anh/chị xem giúp nha

http://www.mediafire.com/?ailo0jmu99z

thanks
  • 0

#6 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 31 October 2008 - 02:46 PM

Cái này là VBA nhưng dùng tiện hơn lisp
http://www.cadviet.c...vao_cad_new.rar
  • 0

#7 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 31 October 2008 - 03:37 PM

...
Đây chỉ là bản vẽ để các Anh/Chỉ hiểu ý em
và Em cũng chỉ muốn thay đổi mấy con số đó thôi

Bản vẻ đầy đủ thì có thêm thông tin, loại thép, khả năng chịu lực, và các kích thước khác
nhưng mấy cái đó thì em tạo mẩu sẳn rồi chỉ copy là xong, còn điền mấy con số sau khi tính là rất nhiều và cần chính xác
vì có lúc chuyển từ excel do làm nhiều và chưa quen nên em nhập nhầm hoài.


Theo mình hiểu, ý bạn là:
1. File *.dwg có sẵn như dạng bạn đã post, vị trí các lỗ không cần chính xác
2. Chương trình đọc các số liệu trong bảng excel, sau đó chỉnh sửa các con số ghi toạ độ trong CAD theo các giá trị tương ứng trong bảng là OK.
Nếu đúng như vậy, bạn thử dùng chương trình sau:

http://www.cadviet.c...les/Xls2Cad.zip

Appload, gõ lệnh X2C (Xls to autoCad) để chạy. Chương trình chỉ yêu cầu bạn làm 2 việc:
1. Quét chọn các text ghi toạ độ mà bạn muốn thay đổi
2. Dialog chọn file hiện ra, chỉ định file *.xls dữ liệu của bạn là xong

Lưu ý:
Có thể bạn chưa hiểu nhiều về lập trình, nhưng cần phải hiểu tổng quan thế này:
Một file bất kỳ, muốn làm cơ sở dữ liệu (database) cho chương trình, phải tuân thủ những quy định nào đó một cách nhất quán. Các quy định này do người lập trình đặt ra theo các tiêu chí: đơn giản, rõ ràng, có tính tổ chức tốt... Tóm lại là tạo điều kiện thuận tiện nhất cho lập trình.
File *.xls của bạn không thuận lợi cho lập trình, mình đã sửa lại theo dạng như sau:

http://www.cadviet.c...files/Data1.zip

Muốn dùng chương trình trên, tất cả các file dữ liệu của bạn bắt buộc phải tuân thủ quy cách như vậy. Cụ thể là:
1. Mỗi file *.xls chỉ sử dụng 1 sheet
2. Phải bắt đầu bảng ở cell A1
3. Cell nào ra cell đó, không dùng tính năng merge cell
4. Row1 dành để ghi tên field. Bạn muốn ghi gì tuỳ ý, chương trình không quan tâm
5. Từ cell A2 trở đi là các dữ liệu thật sự, thứ tự các field theo như file mẫu, không được tuỳ ý thay đổi thứ tự của chúng.
6. Các row và collumn có dữ liệu phải liên tục nhau. Ví dụ, giữa 2 row dữ liệu không được có 1 row bỏ trống.
7. Ngoài các con số dữ liệu, không được ghi thêm bất cứ cái gì vào bảng

Để hiểu hơn, bạn hãy hình dung cách hành xử của chương trình:
1. Như đã quy ước, nó không quan tâm đến row1 trong bảng excel
2. Bắt đầu từ row2, đọc data trong các cell theo thứ tự: A2, B2, C2, D2; ghi nhận số liệu ở vị trí thứ 2 và 4 (cell B2 và D2).
3. Tiếp tục cho đến khi... không còn gì để đọc. Nghĩa là, nếu bạn hứng chí ghi ở cell nào đó một nội dung như "Yêu là chết trong lòng một ít..." chẳng hạn, nó vẫn cứ đọc và "vô tư" cho rằng đó là... dữ liệu! Và coi chừng chính cái câu vớ vẩn ấy sẽ được nó chuyển tải sang bản vẽ Cad của bạn!
4. Sắp xếp các dữ liệu nhận được theo thứ tự từ nhỏ đến lớn
5. Trong Acad, ghi nhận các đối tượng text mà bạn đã chọn, sắp xếp chúng theo thứ tự từ trái qua phải
6. Lần lượt thay các trị số đọc được vào các text theo đúng thứ tự

Với cách hoạt động như vậy, nếu bạn không tuân thủ các quy định nói trên, kết quả nhận được sẽ sai bét!

Bạn dùng thử và nhớ phản hồi cho mình biết 2 vấn đề:
1. Kết quả chạy chương trình
2. Version của AutoCAD và Excel mà bạn dùng
  • 0

#8 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 175 (tàm tạm)

Đã gửi 31 October 2008 - 06:58 PM

Cái này là VBA nhưng dùng tiện hơn lisp
http://www.cadviet.c...vao_cad_new.rar

File này nên phát triển thêm thì có thế xuất thành 1 bản vẽ hoàn toàn có cả các dim, các lổ và các text ghi chú cần thiết.
Chỉ cần "đóng thêm khung" rồi in. http://www.cadviet.c...g_demo_only.zip
Có nhiều pm như Tekla, ProSteel vv tự động xuất bản vẽ từ model 3D, nhưng PP thấy dùng VBA, LISP vẩn xuất bản vẽ rất nhanh.
Bản vẽ dưới dây PP chỉ cần khoảng dưới 30 giây là có được. Bản vẽ này sử dụng LISP, tên pm là SP2000.
Bác Nothien có post trên Cadviet.com rồi.
Hình đã gửi
Hình đã gửi

Xem Video clip PP thực hiện: http://www.cadviet.c...ve_gia_cong.zip (link Video)

  • 2

#9 caothang

caothang

    biết pan

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

Đã gửi 31 October 2008 - 09:13 PM

Wow wow wow , được nhiều hồi âm giúp đỡ quá , Em cảm ơn rất nhiều

*

Xem Video clip PP thực hiện: http://www.cadviet.c...ve_gia_cong.zip

cài này em tạm lưu để dành sử dụng khi khác, vì kích thước của em phải theo mẩu của cty , không giống kiểu này.

*

Cái này là VBA nhưng dùng tiện hơn lisp
http://www.cadviet.c...vao_cad_new.rar

cái này em không biết xài
làm theo hướng dẫn nhưng nó báo thế này , A xem và chỉ giúp nhé, cài này thấy hay vì chỉ thay đổi tại 1 vị trí cố định
Hình 1
Hình 2


*

http://www.cadviet.c...les/Xls2Cad.zip
http://www.cadviet.c...files/Data1.zip

anh này đã giúp em giảm bớt được 99% thời gian làm công việc này

1% là em phải vào cad nhập thêm chiều dài thanh sắt là xong

Còn 1% này anh giúp được không vậy, không thì cũng rất ok rồi
Em dùng Cad 2005, excel 2003


***********************
Em xin hỏi tiếp :

Bước tiếp theo là công nhân sẽ lấy những kích thước lỗ và nhập vào máy cnc để máy đụt lỗ tự động .
nếu vẽ đúng thực tế thì chỉ cần dùng phần mềm CAM chuyển qua mã NC là có thể xong việc .
các anh/chi có thể giúp đưa các số này vào 1 file có dạng như sau :

X20.0,Y50;
X300,Y50;
X500,Y50;
X715,Y50;
X1120,Y50;
X6881.5,Y50;
X7286.5,Y50;
X7501.5,Y50;
X7701,Y50;
X7980,Y50;



Bản vẽ giấy thì đưa khách hàng phê duyệt, bản vẽ cad thì chuyển xuống xưởng ( không chuyển được các file khác)
vì bộ phận chuyển là người quản lý , nên em không thể chuyển file excel cũng như các file dạng khác ,và usb thì bị khóa tất cả.
vì thế có cách nào từ cad mà công nhân có thể lấy ra tạo thành file như trên không.

Đúng là rắc rối ,nhưng nhập gia thì tùy tục thôi các anh/chị, đó là theo iso đấyyyyyyyyyyyyyyyyyyỹy
  • 0

#10 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 01 November 2008 - 07:29 AM

... đã giúp em giảm bớt được 99% thời gian làm công việc này
1% là em phải vào cad nhập thêm chiều dài thanh sắt là xong

Còn 1% này anh giúp được không vậy, không thì cũng rất ok rồi
Em dùng Cad 2005, excel 2003
***********************
Em xin hỏi tiếp :

Bước tiếp theo là công nhân sẽ lấy những kích thước lỗ và nhập vào máy cnc để máy đụt lỗ tự động .
nếu vẽ đúng thực tế thì chỉ cần dùng phần mềm CAM chuyển qua mã NC là có thể xong việc .
các anh/chi có thể giúp đưa các số này vào 1 file có dạng như sau :
Bản vẽ giấy thì đưa khách hàng phê duyệt, bản vẽ cad thì chuyển xuống xưởng ( không chuyển được các file khác)
vì bộ phận chuyển là người quản lý , nên em không thể chuyển file excel cũng như các file dạng khác ,và usb thì bị khóa tất cả.
vì thế có cách nào từ cad mà công nhân có thể lấy ra tạo thành file như trên không.

Đúng là rắc rối ,nhưng nhập gia thì tùy tục thôi các anh/chị, đó là theo iso đấyyyyyyyyyyyyyyyyyyỹy

Nói thật tình, mình không thích cái bản vẽ không đúng kích thước và tỷ lệ của bạn. Hơn nữa, cũng chưa rõ mình hiểu như vậy có đúng ý đồ của bạn hay không nên chỉ dừng lại ở mức độ đó. Trong chuỗi công việc bạn cần, cái lôi thôi nhất là đọc được dữ liệu từ file *.xls. Có được dữ liệu rồi, tất cả các yêu cầu trên đều thực hiện được, kể cả việc xuất ra file NC hoàn chỉnh, có thể nối thẳng từ computer của bạn đến cái máy đột qua cổng giao tiếp (nếu hệ thống Computer - CNC Machine của bạn có tính năng này) và làm cho nó chạy ầm ầm, chẳng cần đến bất kỳ phần mềm CAM nào khác! Tất nhiên, để làm được việc này, bạn cần phải cho biết máy đột CNC của bạn dùng hệ điều khiển nào, kèm theo bảng hướng dẫn các mã M, mã G theo catalog của nó. Ngoài ra, cũng xin nói rõ, một chương trình như vậy sẽ không free vì nó cũng khá tốn công sức, phải có chút thù lao để tác giả tái tạo... sức lao động!

Trên diễn đàn này, mình có thể giúp bạn hoàn chỉnh chương trình trên với các tính năng sau:
1. Đọc data từ *.xls
2. Vẽ hoàn chỉnh cái thanh sắt có lỗ ở 2 dạng: dạng chính xác, đúng kích thước thực tế và dạng... "xạo" để đưa cho khách hàng xem! Dạng thật thì không thành vấn đề, còn dạng "xạo" thì bạn phải cho biết "quy luật xạo". Chương trình nó không biết đến khái niệm "toạ độ x muốn vẽ sao cũng được"!
3. Ghi kích thước theo quy cách bạn muốn
4. Xuất file dạng X20.0,Y50.0;...

Bạn đừng giải thích dài dòng, mọi yêu cầu với chương trình nên mô tả một cách ngắn gọn và rõ ràng theo sơ đồ:
Input -> Processing -> Output
Hãy post lên cái bạn có (Input) và kết quả bạn cần (Output) bằng các file ví dụ cụ thể (nhưng phải mang tính tổng quát), có thể kèm theo vài dòng chú thích ngắn gọn là OK.
  • 0

#11 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 175 (tàm tạm)

Đã gửi 01 November 2008 - 09:21 AM

PP vừa viết xong 1 bài thì tự nhiên bị re set, mất tất cả. Thôi đành viết lại vậy. -_-
Đêm qua nhân đọc topic này mà PP nghỉ ra 1 idea này.
Mục đích là để xuất các bv có dạng thanh dùng trong các tháp thép có cả hàng trăm thanh một cách nhanh chóng.
Cách dùng Excel+LISP để xuất bv như sau:
1. Trong bảng Excel có 2 sheets.
2. Input các infomation của bv vào sheet Info.
3. Input các dimension vào sheet Dim.
4. Sheet Info được link với sheet Info.
5. Dùng VBA để chuyển sheet Info thành dạng text .csv
6. Tạo templates các khung tên cho bv CAD.
7. Tạo các dạng thanh với các số lổ khac nhau, bỏ vào pallette.
8. Mở bv template.
9. Drag dạng thanh nào muốn có từ pallette vào model.
10. Save bv theo filename đã đặt trong bảng Excel.
11. Mở lại bv, LISP sẽ tự động thay các data từ Excel vào CAD
12. Save lại, in bv hoặc send. Done
13. Lặp lại bước 8 cho bv mới.
14. Tạo 1 sheet set manager để tiện việc quản lý tất cả các bv.
PP sẽ thực hiện thử xem sao.
Có 1 việc cần các Bác giúp: Làm sao để thay các số của dim thành các Atribute?
Không lẽ phải Explode dim, xoá số rồi đặt Atttribue vào thế? Nhờ các Bác cho ý kiến. Thanks you
P/S: Nếu làm được như trên thì chắc không cần Drafter để vẽ nữa rùi!

Hình đã gửi

Hình đã gửi


Hình đã gửi

Hình đã gửi


Hình đã gửi

Hình đã gửi
  • 0

#12 ntson

ntson

    biết zoom

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

Đã gửi 01 November 2008 - 09:55 AM

Nhờ mọi nguời viết một bài về cách đọc và tách dữ liệu từ một file excel (có ví dụ kèm theo). Khi đọc hết dữ liệu thì dùng thuật toán như thế nào để trương trình ngừng đọc....
Vừa rồi có đọc đoạn lisp của anh ssg viết để lấy số liệu từ excel mà thấy khó hiểu quá, anh ssg toàn dùng tiếng anh thôi à....
ví dụ dữ liệu trong excel như sau:
A1 B1 C1 D1 E1 F1
A2 B2 D2 E2 F2
A3 B3 C3 D3 E3
A4 B4
D5 E5 F5
Mong các cao thủ chỉ giúp, cảm ơn mọi người nhiều
  • 0

#13 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 01 November 2008 - 03:37 PM

Nhờ mọi nguời viết một bài về cách đọc và tách dữ liệu từ một file excel (có ví dụ kèm theo). Khi đọc hết dữ liệu thì dùng thuật toán như thế nào để trương trình ngừng đọc....
Vừa rồi có đọc đoạn lisp của anh ssg viết để lấy số liệu từ excel mà thấy khó hiểu quá, anh ssg toàn dùng tiếng anh thôi à....
ví dụ dữ liệu trong excel như sau:
A1 B1 C1 D1 E1 F1
A2 B2 D2 E2 F2
A3 B3 C3 D3 E3
A4 B4
D5 E5 F5
Mong các cao thủ chỉ giúp, cảm ơn mọi người nhiều

Góp ý:
Không nên lập quá nhiều topic cho các vấn đề có nội dung giống nhau hoặc tương tự nhau. Bạn thắc mắc về code của ssg sao không hỏi ngay ở đây mà đi lập topic mới? Ssg đã move bài của bạn về đây.

Topic này do bạn caothang lập ra nhưng có vẻ có nhiều người quan tâm nên ssg đã đổi tên nó cho phù hợp hơn:

Kết hợp Excel - AutoLisp - AutoCAD


Phát huy sức mạnh của 3 trong 1!

Xin có vài dòng giải thích về việc đổi tên này:

1. Đã vào CadViet, dù thuộc nhiều ngành khác nhau, ai cũng biết AutoCAD có vai trò quan trọng như thế nào trong công việc chuyên môn của mình
2. Phần mềm MS Excel cũng vậy, là bạn đồng hành thân thiết của nhiều người, phạm vi ứng dụng không chừng còn rộng rãi hơn cả AutoCAD
3. AutoLisp đã chứng tỏ được sức mạnh của nó thông qua một số lượng khổng lồ các chương trình ứng dụng mà các members đã post lên diễn đàn

Cả 3 công cụ trên, nếu biết cách kết hợp chúng lại một cách chặt chẽ sẽ tạo nên được rất nhiều ứng dụng thật sự hiệu quả, giúp chúng ta làm việc nhẹ nhàng hơn, thoải mái hơn, năng suất và chất lượng công việc sẽ tăng lên đến mức đáng kinh ngạc đối với nhiều người.

Chúng ta đã từng có topic "AutoCAD với Excel", cũng đã có nhiều ý kiến rất hay, nhưng thực sự là nó đã bị "loãng" đi rất nhiều vì giữa AutoCAD và Excel có khá nhiều mối quan hệ:
- Copy bảng Excel và paste vào Cad
- Copy hình từ Cad paste qua Excel
- Nhúng trực tiếp bảng Excel vào Cad đời mới
- Tạo các dòng lệnh trong cell của Excel, copy va paste qua Cad
- Dùng VBA để giao tiếp giữa Excel và Cad
- v.v...

Mỗi phương pháp kể trên đều có cái hay (cũng như cái dở) riêng, có phạm vi ứng dụng và những hạn chế riêng. Ssg không có ý so sánh hay luận bàn về vấn đề đó. Ý ssg là topic này được dành riêng để các bạn thảo luận về sức mạnh của "bộ ba" nói trên, như chính tên gọi của topic.

Riêng thắc mắc của bạn ntson, ssg sẽ giải thích cặn kẽ. Nhưng trước hết, xin phép hỏi lại bạn một câu: bạn có biết cách lấy data từ 1 file *.txt hoặc *.csv để phục vụ cho chương trình lisp của mình hay không?
  • 1

#14 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 01 November 2008 - 03:56 PM

Có 1 việc cần các Bác giúp: Làm sao để thay các số của dim thành các Atribute?
Không lẽ phải Explode dim, xoá số rồi đặt Atttribue vào thế? Nhờ các Bác cho ý kiến. Thanks you

Chưa hiểu ý! Bạn có thể giải thích rõ hơn không?
  • 0

#15 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 175 (tàm tạm)

Đã gửi 02 November 2008 - 10:58 AM

Chưa hiểu ý! Bạn có thể giải thích rõ hơn không?

PP muốn dùng LISP để thay con số của dim thành 1 attribute. Mục đích để LISP thay các số từ file .csv
Thí dụ dim của kích thuớc đầu là 40 (xem bv đã post ở bài trên), LISP sẽ thay số 40 thành 1 attribute Lh1 vv..
  • 0

#16 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 02 November 2008 - 03:07 PM

PP muốn dùng LISP để thay con số của dim thành 1 attribute. Mục đích để LISP thay các số từ file .csv
Thí dụ dim của kích thuớc đầu là 40 (xem bv đã post ở bài trên), LISP sẽ thay số 40 thành 1 attribute Lh1 vv..

Ssg có mấy ý kiến này:

1. Lisp có thể tạo mới hoặc modify các đối tượng dimensions, không cần (và cũng không thể) thay số của dim bằng attribute
2. Ssg chưa rõ hình dáng, quy cách cũng như số chủng loại các thanh thép của bạn nhưng cảm thấy cách làm theo idea của bạn hơi dài dòng.
3. Nếu toàn bộ chúng đều có dạng như cái image "BAN VE GIA CONG" mà bạn đã post ở trên thì rất đơn giản, lisp có thể tạo ra tất cả chúng từ 1 file *.xls duy nhất, và chỉ sử dụng 1 sheet.
Trong file *.xls, bạn tổ chức data như sau (các con số là ví dụ như hình vẽ của bạn):

Hình đã gửi

Trong đó số lượng lỗ (n) trên các thanh có thể khác nhau và là một số tuỳ ý.

Bạn chỉ cần làm các việc:
1. Trong Excel: Nhập số liệu thô vào file *.xls, có thể gán công thức để tính các giá trị của các cells còn lại theo chuyên môn của bạn. Chương trình lisp không quan tâm đến việc đó, nó chỉ đọc values trong các cells để thực thi.

2. Trong AutoCAD:
- Chỉ định file *.xls
- Chỉ định ID (1, 2, 3...)
Lisp có khả năng thực hiện từ A đến Z như hình vẽ bạn đã post.
  • 2

#17 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 175 (tàm tạm)

Đã gửi 03 November 2008 - 12:28 AM

Bác Ssg chưa hiểu toàn bộ ý của PP.
PP muốn là sẽ xuất ra các bản vẽ hoàn chỉnh ngoài cái hình "ban ve gia cong" post ở trên thì còn chứa mọi thông tin của 1 bản vẽ chi tiết cần phải có như khung tên, tên project, chi tiết gia công, yêu cầu kỹ thuật, BOM, chi tiết người vẽ, duyệt, kiểm tra, khách hàng, thời gian, liệt kê mọi chi tiết các revisions liên quan vv... Bời vậy phải cần có sheet Info, để điền các data này sau đó LISP mới đọc và input tự động vào bv. (Lợi ích của bảng Excel này còn giúp người quản lý chỉ cần mở bảng này ra xem là biết mọi information của mọi bv, Excel cho phép copy các text giống nhau trong các bv bằng 1 vài cái "click", giúp cho Drafter khỏi phải đánh text trong bv). Còn sheet Dim thì chắc chắn phải giống như bảng thí dụ của Ssg rồi.
Thí dụ như hình tháp thép trên, có cả trăm bv chi tiết ( mỗi chi tiết phải vẽ trong 1 bv). Drafter trước tiên sẽ thực hiện bước 2 và 3 là input database, xong thì click vào lệnh VBA để chuyển thành 1 file text (bước 5). Mở AutoCAD rồi bắt đầu thực hiện các bước 8,9 và 10 cho mổi bv cho đến khi có đủ số bv như đã input trong bảng Excel. Bây giờ Drafter chỉ việc mở lại từng bv, lúc này LISP sẽ tự động update các data từ bảng Excel vào bv, bước 12- save lại bv rồi gởi đi. (Bước 7 đã tạo sẳn library các thanh khác loại rồi)
Ý thứ 2 của Ssg không cần phải thực hiện gì cả vì bước 10 đã save cho mỗi bv 1 filename có ID giống như trong bảng Excel rồi, bước 11- Mở lại bv, LISP sẽ tự động thay các data từ Excel vào CAD.
  • 0

#18 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 03 November 2008 - 08:43 AM

Bác Ssg chưa hiểu toàn bộ ý của PP.
PP muốn là sẽ xuất ra các bản vẽ hoàn chỉnh ngoài cái hình "ban ve gia cong" post ở trên thì còn chứa mọi thông tin của 1 bản vẽ chi tiết cần phải có như khung tên, tên project, chi tiết gia công, yêu cầu kỹ thuật, BOM, chi tiết người vẽ, duyệt, kiểm tra, khách hàng, thời gian, liệt kê mọi chi tiết các revisions liên quan vv... Bời vậy phải cần có sheet Info, để điền các data này sau đó LISP mới đọc và input tự động vào bv. (Lợi ích của bảng Excel này còn giúp người quản lý chỉ cần mở bảng này ra xem là biết mọi information của mọi bv, Excel cho phép copy các text giống nhau trong các bv bằng 1 vài cái "click", giúp cho Drafter khỏi phải đánh text trong bv). Còn sheet Dim thì chắc chắn phải giống như bảng thí dụ của Ssg rồi.
Thí dụ như hình tháp thép trên, có cả trăm bv chi tiết ( mỗi chi tiết phải vẽ trong 1 bv). Drafter trước tiên sẽ thực hiện bước 2 và 3 là input database, xong thì click vào lệnh VBA để chuyển thành 1 file text (bước 5). Mở AutoCAD rồi bắt đầu thực hiện các bước 8,9 và 10 cho mổi bv cho đến khi có đủ số bv như đã input trong bảng Excel. Bây giờ Drafter chỉ việc mở lại từng bv, lúc này LISP sẽ tự động update các data từ bảng Excel vào bv, bước 12- save lại bv rồi gởi đi. (Bước 7 đã tạo sẳn library các thanh khác loại rồi)
Ý thứ 2 của Ssg không cần phải thực hiện gì cả vì bước 10 đã save cho mỗi bv 1 filename có ID giống như trong bảng Excel rồi, bước 11- Mở lại bv, LISP sẽ tự động thay các data từ Excel vào CAD.

Ssg vẫn hiểu trong 1 bản vẽ, ngoài các hình vẽ chính và dim, còn có đủ các thứ "linh tinh" khác như bạn nêu (đó là công việc hàng ngày của ssg mà). Tuy nhiên, cách làm của mỗi Cty thường không giống nhau, tuỳ thuộc vào nhiều yếu tố: quy định, thói quen, quy mô của project, sản lượng của mặt hàng... Nhưng dù là kiểu gì đi nữa, mọi thông tin (infomation) đều có thể tổ chức thành dữ liệu (data) và dùng chương trình để xử lý tự động. Cách thức lập trình sẽ quyết định cách thức tổ chức data.
Theo nhận định của ssg, với yêu cầu như bạn đã nêu, mỗi project chỉ cần 1 file *.xls, dữ liệu có thể nằm ở 1 sheet hay nhiều sheet tuỳ thuộc cách thức tổ chức quản lý. Thật ra thì ssg cũng chưa hiểu hết cách làm của Cty bạn, điều ssg muốn nói ở đây là:
1. Cách của bạn phải làm 2 lần: 1 lần tạo bản vẽ và 1 lần update. Tại sao không gom lại và "chơi" luôn một lần?
2. Lisp có khả năng chuyển tải trực tiếp mọi data từ file *.xls vào *.dwg và ngược lại, không cần bất kỳ một sự trợ giúp nào khác (kể cả VBA), cũng không cần phải qua file trung gian *.csv hoặc *.txt

Nếu không vướng vấn đề "bí mật business", bạn có thể post lên các file ví dụ có liên quan (*.xls, *.dwg, *.dwt...) của 1 project nào đó được không? Một project có thể có hàng trăm, hàng ngàn chi tiết khác nhau nhưng bạn chỉ cần đưa lên năm bảy cái để tượng trưng là đủ hiểu.
  • 0

#19 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 175 (tàm tạm)

Đã gửi 03 November 2008 - 10:34 AM

Ssg vẫn hiểu trong 1 bản vẽ, ngoài các hình vẽ chính và dim, còn có đủ các thứ "linh tinh" khác như bạn nêu (đó là công việc hàng ngày của ssg mà). Tuy nhiên, cách làm của mỗi Cty thường không giống nhau, tuỳ thuộc vào nhiều yếu tố: quy định, thói quen, quy mô của project, sản lượng của mặt hàng... Nhưng dù là kiểu gì đi nữa, mọi thông tin (infomation) đều có thể tổ chức thành dữ liệu (data) và dùng chương trình để xử lý tự động. Cách thức lập trình sẽ quyết định cách thức tổ chức data.
Theo nhận định của ssg, với yêu cầu như bạn đã nêu, mỗi project chỉ cần 1 file *.xls, dữ liệu có thể nằm ở 1 sheet hay nhiều sheet tuỳ thuộc cách thức tổ chức quản lý. Thật ra thì ssg cũng chưa hiểu hết cách làm của Cty bạn, điều ssg muốn nói ở đây là:
1. Cách của bạn phải làm 2 lần: 1 lần tạo bản vẽ và 1 lần update. Tại sao không gom lại và "chơi" luôn một lần?
2. Lisp có khả năng chuyển tải trực tiếp mọi data từ file *.xls vào *.dwg và ngược lại, không cần bất kỳ một sự trợ giúp nào khác (kể cả VBA), cũng không cần phải qua file trung gian *.csv hoặc *.txt

Nếu không vướng vấn đề "bí mật business", bạn có thể post lên các file ví dụ có liên quan (*.xls, *.dwg, *.dwt...) của 1 project nào đó được không? Một project có thể có hàng trăm, hàng ngàn chi tiết khác nhau nhưng bạn chỉ cần đưa lên năm bảy cái để tượng trưng là đủ hiểu.

Trước tiên là PP xin cảm ơn bác Ssg đã rất quan tâm trao đổi về đề tài này.
Như đã nói trên, đây mới chỉ là 1 idea của PP, vả lại cũng cần phải nói trước là công việc của PP (và cty) không phải là detailing các chi tiết trên. Muốn detailing thì cty thuê thợ bên ngoài dùng Tekla để model và cung cấp bv luôn. Idea này chỉ dùng để hổ trợ các bác Drafter về việc xuất bv chi tiết của các tháp thép hoặc các công việc khác liên quan đến các thanh và lỗ...
Trong link này có 1 bv 3D của tháp thép, 1 bv chi tiết thanh để làm mẫu, các information dùng để detailing.
http://www.cadviet.c...es/Tower_DS.zip
Như PP đã nêu trong bước 14 là tạo 1 sheet set manager để tiện việc quản lý tất cả các bv. PP đã làm thử như hình đính kèm trong link.
Vì để dể dàng quản lý hàng trăm bv, các bv chi tiết nên save vảo mỗi folder cho từng đoạn tháp thép. Sheet set manager sẽ giúp việc mở các bv cần xem một cách tiện lợi và nhanh chóng.
Cái tháp DG20 có khoảng 500 bản vẽ đó bác Ssg.
PP muốn biết làm sao để "gom lại và "chơi" luôn một lần?". Xin bác viết cho đoạn LISP đó nhé. Thanks you
  • 0

#20 ntson

ntson

    biết zoom

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

Đã gửi 03 November 2008 - 11:25 AM

Góp ý:
Không nên lập quá nhiều topic cho các vấn đề có nội dung giống nhau hoặc tương tự nhau. Bạn thắc mắc về code của ssg sao không hỏi ngay ở đây mà đi lập topic mới? Ssg đã move bài của bạn về đây.

Topic này do bạn caothang lập ra nhưng có vẻ có nhiều người quan tâm nên ssg đã đổi tên nó cho phù hợp hơn:

Kết hợp Excel - AutoLisp - AutoCAD


Phát huy sức mạnh của 3 trong 1!

Xin có vài dòng giải thích về việc đổi tên này:

1. Đã vào CadViet, dù thuộc nhiều ngành khác nhau, ai cũng biết AutoCAD có vai trò quan trọng như thế nào trong công việc chuyên môn của mình
2. Phần mềm MS Excel cũng vậy, là bạn đồng hành thân thiết của nhiều người, phạm vi ứng dụng không chừng còn rộng rãi hơn cả AutoCAD
3. AutoLisp đã chứng tỏ được sức mạnh của nó thông qua một số lượng khổng lồ các chương trình ứng dụng mà các members đã post lên diễn đàn

Cả 3 công cụ trên, nếu biết cách kết hợp chúng lại một cách chặt chẽ sẽ tạo nên được rất nhiều ứng dụng thật sự hiệu quả, giúp chúng ta làm việc nhẹ nhàng hơn, thoải mái hơn, năng suất và chất lượng công việc sẽ tăng lên đến mức đáng kinh ngạc đối với nhiều người.

Chúng ta đã từng có topic "AutoCAD với Excel", cũng đã có nhiều ý kiến rất hay, nhưng thực sự là nó đã bị "loãng" đi rất nhiều vì giữa AutoCAD và Excel có khá nhiều mối quan hệ:
- Copy bảng Excel và paste vào Cad
- Copy hình từ Cad paste qua Excel
- Nhúng trực tiếp bảng Excel vào Cad đời mới
- Tạo các dòng lệnh trong cell của Excel, copy va paste qua Cad
- Dùng VBA để giao tiếp giữa Excel và Cad
- v.v...

Mỗi phương pháp kể trên đều có cái hay (cũng như cái dở) riêng, có phạm vi ứng dụng và những hạn chế riêng. Ssg không có ý so sánh hay luận bàn về vấn đề đó. Ý ssg là topic này được dành riêng để các bạn thảo luận về sức mạnh của "bộ ba" nói trên, như chính tên gọi của topic.

Riêng thắc mắc của bạn ntson, ssg sẽ giải thích cặn kẽ. Nhưng trước hết, xin phép hỏi lại bạn một câu: bạn có biết cách lấy data từ 1 file *.txt hoặc *.csv để phục vụ cho chương trình lisp của mình hay không?

Cảm ơn ssg đã trả lời, việc lấy dữ liệu từ *.txt ntsơn đã lấy nhiều, có trường hợp các dòng dữ lệu thay đổi liên tục nhưng vẫn có quy luật. Tuy nhiên thuật toán lấy dữ lệu vẫn còn thủ công. Ví dụ khi kết thúc tệp thì phải có 1 ký tự đặc biệt nào đó, khi các dòng có dữ liệu thay đổi (dòng 1 có 2 dữ liệu cần lấy, dòng 2 có 3 dữ liệu cần lấy...) thì phải thêm 1 ký tự trống vào cuối dòng 1 (hoặc n ký tự trống), số ký tự phụ thuộc vào số dữ liệu cần lấy trên 1 dòng nhiều nhất....Vì năng lực có hạn, ntson không nghĩ được thuật toán khả thi hơn.
Còn file *.csv ntson trưa tiếp xúc bao giờ.
Mong ssg trả lời.
  • 0