Đến nội dung


Hình ảnh
* * * - - 8 Bình chọn

Viết lisp theo yêu cầu [phần 2]


  • Chủ đề bị khóa Chủ đề bị khóa
3783 replies to this topic

#881 nhocbabi

nhocbabi

    biết vẽ rectang

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

Đã gửi 15 March 2010 - 12:07 PM

Em có một việc muốn nhờ mọi người giúp đỡ đó là:
Em có một file cad như sau:
http://www.cadviet.c...les/2/aaa_2.dwg
Và một file cell với số liệu như sau (vì em ko up đc file cell nên phải chuyển số liệu sang file word):
http://www.cadviet.c...files/2/bbb.doc
Vậy có thể tạo một lisp để tự động nhập các số liệu ở bảng cell sang bản cad theo từng vị trí tương ứng đc không ạ. Ví dụ tại đối tượng A-01 bên bản cad sẽ được chèn thêm số liệu 316 ở bên bản cell sang... Tọa độ của tất cả các điểm chèn số liệu này so với đối tượng là do mình lựa chọn.
Cả nhà giúp em với nhé, em cảm ơn nhiều!
  • 0

#882 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 15 March 2010 - 02:15 PM

Em có một việc muốn nhờ mọi người giúp đỡ đó là:
Em có một file cad như sau:
http://www.cadviet.c...les/2/aaa_2.dwg
Và một file cell với số liệu như sau (vì em ko up đc file cell nên phải chuyển số liệu sang file word):
http://www.cadviet.c...files/2/bbb.doc
Vậy có thể tạo một lisp để tự động nhập các số liệu ở bảng cell sang bản cad theo từng vị trí tương ứng đc không ạ. Ví dụ tại đối tượng A-01 bên bản cad sẽ được chèn thêm số liệu 316 ở bên bản cell sang... Tọa độ của tất cả các điểm chèn số liệu này so với đối tượng là do mình lựa chọn.
Cả nhà giúp em với nhé, em cảm ơn nhiều!

Chào nhocbabi
Có phải ý của bạn như thế này phải không?
http://www.cadviet.c...les/2/aaa_3.dwg
Từ A-01 đến A-24 thì đánh số y như trong file Word của bạn còn từ A-25 trở đi vì không biết bạn đánh số như thế nào nên Tue_NV bắt đầu từ số 01 vậy.

Bạn xem có đúng như vậy không?
Nếu đúng như vầy thì không cần sử dụng đến Lisp bạn ạ
  • 0

#883 nhocbabi

nhocbabi

    biết vẽ rectang

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

Đã gửi 15 March 2010 - 02:20 PM

Chào nhocbabi
Có phải ý của bạn như thế này phải không?
http://www.cadviet.c...les/2/aaa_3.dwg
Từ A-01 đến A-24 thì đánh số y như trong file Word của bạn còn từ A-25 trở đi vì không biết bạn đánh số như thế nào nên Tue_NV bắt đầu từ số 01 vậy.

Bạn xem có đúng như vậy không?
Nếu đúng như vầy thì không cần sử dụng đến Lisp bạn ạ

Đúng rồi đấy ạ, thực ra có có một loạt các đối tượng khác nữa. Từ A-01 đến A-79, B-01 đến B-65, C-01 đến C-189...Và với mỗi một đối tượng này đều có một số liệu tương ứng ở bên bảng cell. Nhưng ở đây em chỉ trích ra một phần số liệu để up lên cho nhẹ thôi. Như thế thì cần phải dùng cách nào để gán số liệu vào các đối tượng này ạ, chỉ cho em với! Em cảm ơn lắm!
  • 0

#884 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 15 March 2010 - 02:50 PM

Đúng rồi đấy ạ, thực ra có có một loạt các đối tượng khác nữa. Từ A-01 đến A-79, B-01 đến B-65, C-01 đến C-189...Và với mỗi một đối tượng này đều có một số liệu tương ứng ở bên bảng cell. Nhưng ở đây em chỉ trích ra một phần số liệu để up lên cho nhẹ thôi. Như thế thì cần phải dùng cách nào để gán số liệu vào các đối tượng này ạ, chỉ cho em với! Em cảm ơn lắm!

Bạn làm theo các bước sau :
1. / Kích chọn 1 Att -> Đánh lệnh Bedit -> Hộp thoại Bedit hiện ra -> Kích OK
2. Copy 1 Tag bất kì . Ví dụ copy Tag TC (chẳng hiểu sao các Tag trong file bản vẽ của bạn chẳng hiện lên nữa).
-> Gõ Ed chọn Tag vừa copy -> Sửa lại Tag TC :
Ví dụ Sửa lại là :
Tag : so
Prompt : so
Default : so123
-> OK
(Tue_NV ví dụ như vậy nhé)
-> Close Block editor -> Yes
3. Sử dụng lệnh Attsync -> để đồng bộ hoá cho Block
Tóm lại , các bước 1; 2; 3 -> Thêm 1 Tag cho thuộc tính

Bước 4 : Sử dụng lệnh Attout
-> Chọn file output (đặt tên và lưu vào 1 thư mục nào đó.) Ví dụ ổ C:\xuat1.txt chẳng hạn
-> Chọn các Block cần xuất trong bản vẽ của bạn ->
Command: attout
Initializing...

Select objects: Specify opposite corner: 47 found

Select objects:

Output file: "C:\xuat1.txt" created.
Bước 5 : Dùng Excel mở file xuat1.txt lên. Chú ý trong hộp thoại Open của Excel. Mục file of Types -> chọn All files thì mới mở được file .txt
-> Khi nhấn Open trong hộp thoại open của Excel -> hộp thoại Text Import Wizzard xuất hiện -> Chọn Delimiters -> Nhấn Next -> Trong mục Delimiters -> Chọn Tab -> -> Nhấn Next -> Qua các column -> Chọn Text trong mục Column data format -> Nhấn Finished -> Bạn sẽ được 1 file Excel như file này :
http://www.cadviet.c...les/2/xuat1.rar
Bạn làm tới đây đã nhé. Mình sẽ chỉ tiếp
  • 1

#885 nhocbabi

nhocbabi

    biết vẽ rectang

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

Đã gửi 15 March 2010 - 02:58 PM

Bạn làm theo các bước sau :
1. / Kích chọn 1 Att -> Đánh lệnh Bedit -> Hộp thoại Bedit hiện ra -> Kích OK
2. Copy 1 Tag bất kì . Ví dụ copy Tag TC (chẳng hiểu sao các Tag trong file bản vẽ của bạn chẳng hiện lên nữa).
-> Gõ Ed chọn Tag vừa copy -> Sửa lại Tag TC :
Ví dụ Sửa lại là :
Tag : so
Prompt : so
Default : so123
-> OK
(Tue_NV ví dụ như vậy nhé)
-> Close Block editor -> Yes
3. Sử dụng lệnh Attsync -> để đồng bộ hoá cho Block
Tóm lại , các bước 1; 2; 3 -> Thêm 1 Tag cho thuộc tính

Bước 4 : Sử dụng lệnh Attout
-> Chọn file output (đặt tên và lưu vào 1 thư mục nào đó.) Ví dụ ổ C:\xuat1.txt chẳng hạn
-> Chọn các Block cần xuất trong bản vẽ của bạn ->
Command: attout
Initializing...

Select objects: Specify opposite corner: 47 found

Select objects:

Output file: "C:\xuat1.txt" created.
Bước 5 : Dùng Excel mở file xuat1.txt lên. Chú ý trong hộp thoại Open của Excel. Mục file of Types -> chọn All files thì mới mở được file .txt
-> Khi nhấn Open trong hộp thoại open của Excel -> hộp thoại Text Import Wizzard xuất hiện -> Chọn Delimiters -> Nhấn Next -> Trong mục Delimiters -> Chọn Tab -> -> Nhấn Next -> Qua các column -> Chọn Text trong mục Column data format -> Nhấn Finished -> Bạn sẽ được 1 file Excel như file này :
http://www.cadviet.c...les/2/xuat1.rar
Bạn làm tới đây đã nhé. Mình sẽ chỉ tiếp

Vâng, em đang mò mẫm đây ạ!
  • 0

#886 nhocbabi

nhocbabi

    biết vẽ rectang

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

Đã gửi 15 March 2010 - 03:18 PM

Bạn làm theo các bước sau :
1. / Kích chọn 1 Att -> Đánh lệnh Bedit -> Hộp thoại Bedit hiện ra -> Kích OK
2. Copy 1 Tag bất kì . Ví dụ copy Tag TC (chẳng hiểu sao các Tag trong file bản vẽ của bạn chẳng hiện lên nữa).
-> Gõ Ed chọn Tag vừa copy -> Sửa lại Tag TC :
Ví dụ Sửa lại là :
Tag : so
Prompt : so
Default : so123
-> OK
(Tue_NV ví dụ như vậy nhé)
-> Close Block editor -> Yes
3. Sử dụng lệnh Attsync -> để đồng bộ hoá cho Block
Tóm lại , các bước 1; 2; 3 -> Thêm 1 Tag cho thuộc tính

Bước 4 : Sử dụng lệnh Attout
-> Chọn file output (đặt tên và lưu vào 1 thư mục nào đó.) Ví dụ ổ C:\xuat1.txt chẳng hạn
-> Chọn các Block cần xuất trong bản vẽ của bạn ->
Command: attout
Initializing...

Select objects: Specify opposite corner: 47 found

Select objects:

Output file: "C:\xuat1.txt" created.
Bước 5 : Dùng Excel mở file xuat1.txt lên. Chú ý trong hộp thoại Open của Excel. Mục file of Types -> chọn All files thì mới mở được file .txt
-> Khi nhấn Open trong hộp thoại open của Excel -> hộp thoại Text Import Wizzard xuất hiện -> Chọn Delimiters -> Nhấn Next -> Trong mục Delimiters -> Chọn Tab -> -> Nhấn Next -> Qua các column -> Chọn Text trong mục Column data format -> Nhấn Finished -> Bạn sẽ được 1 file Excel như file này :
http://www.cadviet.c...les/2/xuat1.rar
Bạn làm tới đây đã nhé. Mình sẽ chỉ tiếp

Bước 4 thì em làm được rồi, nhưng sao các bước 1,2,3 thì em ko thể làm được theo như hướng dẫn nhỉ!
  • 0

#887 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 15 March 2010 - 03:28 PM

Bước 4 thì em làm được rồi, nhưng sao các bước 1,2,3 thì em ko thể làm được theo như hướng dẫn nhỉ!

file hoàn thành bước 1; 2; 3 ở đây :
http://www.cadviet.c...s/2/aaa_2_1.dwg
Chúc bạn hoàn thành được nó :D
  • 1

#888 nhocbabi

nhocbabi

    biết vẽ rectang

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

Đã gửi 15 March 2010 - 03:36 PM

Em vừa làm theo các bước 1,2,3 thì em được kết quả như này
http://www.cadviet.c...les/2/ccc_1.jpg
Không biết em đã làm đúng yêu cầu chưa :|
  • 0

#889 nhocbabi

nhocbabi

    biết vẽ rectang

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

Đã gửi 15 March 2010 - 03:39 PM

file hoàn thành bước 1; 2; 3 ở đây :
http://www.cadviet.c...s/2/aaa_2_1.dwg
Chúc bạn hoàn thành được nó :D

:D Hình như em làm đc rồi
Chỉ tiếp em các bước tiếp theo đi ạ :cheers:
  • 0

#890 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 15 March 2010 - 03:58 PM

Em vừa làm theo các bước 1,2,3 thì em được kết quả như này
http://www.cadviet.c...les/2/ccc_1.jpg
Không biết em đã làm đúng yêu cầu chưa :|

Vì bạn gửi file ảnh nên Tue_NV không thể chẩn đoán được. Bạn xem cái file mà Tue_NV đã upload ở bài viết trên là xem bạn làm đúng hay chưa à?
Tiếp nhé :
Bước 6 :
Mở file Excel có chứa 2 cái cột mà bạn upload như file Word đó lên. File Excel đó có chứa 2 cột : 1 cột ghi là A-01, A-02.....; cột thứ 2 ghi số như bạn nói đó.
Sử dụng chức năng copy Sheet -> copy Sheet đó qua file Excel vừa tạo, ta được file Excel gồm 2 Sheet :
-> Sử dụng hàm Vlookup trong Excel -> để gán giá trị tương ứng của Sheet2 cho Shee1 (cột H2 đến H48)
Ý là gắn giá trị tương ứng như số A-21 phải gắn số tương ứng là 2221....
File thể hiện kết quả tính ở đây :
http://www.cadviet.c...s/2/xuat1_1.rar

Bước 7 : Bôi đen A1 -> H48 -> copy ->mở file C:xuat.txt lên -> xoá tất cả -> Paste nội dung đã copy từ Excel vào ->
Kết quả sẽ được file xuat1.txt như thế này :
http://www.cadviet.c...les/2/xuat1.txt

Mở file CAD của bạn lên -> gõ lệnh Attin -> Chọn file xuat1.txt vừa tạo -> Kết quả sẽ được như ý bạn.
Command: attin
Initializing...

Reading the input file... Done.
47 Block inserts modified.

Thực chất của quá trình này chẳng qua là trích xuất (output) và Nhập (Input) Block thuộc tính và cần có thêm Excel hỗ trợ trong quá trình tính toán
Chúc thành công :D
  • 0

#891 nhocbabi

nhocbabi

    biết vẽ rectang

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

Đã gửi 15 March 2010 - 04:49 PM

Vì bạn gửi file ảnh nên Tue_NV không thể chẩn đoán được. Bạn xem cái file mà Tue_NV đã upload ở bài viết trên là xem bạn làm đúng hay chưa à?
Tiếp nhé :
Bước 6 :
Mở file Excel có chứa 2 cái cột mà bạn upload như file Word đó lên. File Excel đó có chứa 2 cột : 1 cột ghi là A-01, A-02.....; cột thứ 2 ghi số như bạn nói đó.
Sử dụng chức năng copy Sheet -> copy Sheet đó qua file Excel vừa tạo, ta được file Excel gồm 2 Sheet :
-> Sử dụng hàm Vlookup trong Excel -> để gán giá trị tương ứng của Sheet2 cho Shee1 (cột H2 đến H48)
Ý là gắn giá trị tương ứng như số A-21 phải gắn số tương ứng là 2221....
File thể hiện kết quả tính ở đây :
http://www.cadviet.c...s/2/xuat1_1.rar

Bước 7 : Bôi đen A1 -> H48 -> copy ->mở file C:xuat.txt lên -> xoá tất cả -> Paste nội dung đã copy từ Excel vào ->
Kết quả sẽ được file xuat1.txt như thế này :
http://www.cadviet.c...les/2/xuat1.txt

Mở file CAD của bạn lên -> gõ lệnh Attin -> Chọn file xuat1.txt vừa tạo -> Kết quả sẽ được như ý bạn.
Command: attin
Initializing...

Reading the input file... Done.
47 Block inserts modified.

Thực chất của quá trình này chẳng qua là trích xuất (output) và Nhập (Input) Block thuộc tính và cần có thêm Excel hỗ trợ trong quá trình tính toán
Chúc thành công :cheers:

Ôi giời ơi, sao em vẫn ko làm ra đc kết quả thế nhỉ
file cad của em đây
http://www.cadviet.c...les/2/aaa_4.dwg
file txt của em đây:
http://www.cadviet.c...files/2/abc.txt
ko biết em sai từ đâu :D(
  • 0

#892 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 15 March 2010 - 05:02 PM

Ôi giời ơi, sao em vẫn ko làm ra đc kết quả thế nhỉ
file cad của em đây
http://www.cadviet.c...les/2/aaa_4.dwg
file txt của em đây:
http://www.cadviet.c...files/2/abc.txt
ko biết em sai từ đâu :D(

Bạn sai từ bước số 5 :

...........
Bước 5 : Dùng Excel mở file xuat1.txt lên. Chú ý trong hộp thoại Open của Excel. Mục file of Types -> chọn All files thì mới mở được file .txt
-> Khi nhấn Open trong hộp thoại open của Excel -> hộp thoại Text Import Wizzard xuất hiện -> Chọn Delimiters -> Nhấn Next -> Trong mục Delimiters -> Chọn Tab -> -> Nhấn Next -> Qua các column -> Chọn Text trong mục Column data format -> Nhấn Finished -> Bạn sẽ được 1 file Excel như file này :
http://www.cadviet.c...les/2/xuat1.rar

Chú ý cột cuối cùng SO chọn General
-> Bạn đế ý dữ liệu của bạn ở cột TC bị sai. Và giá trị của cột Handle khi bạn không làm đúng thao tác trên đã bị sửa nên chưa được.

Lỗi do giá trị HANDLE đã bị sửa do chưa làm đúng thao tác trên

HANDLE BLOCKNAME TEXT DT MD TC HS
'254178 sdd A-21 8631 49 5.8 - 2221
'254171 sdd A-47 4810 49 6 2.9 561
'25416A sdd A-46 11467 64 15-Jun 5.1 2465
'254163 sdd A-45 6601 50 15-May 6.5 1912

Bạn làm đúng y thao tác từ bước 4 đến bước 7 thử xem.
Chú ý -> Chuẩn xác.
Chúc thành công :cheers:
  • 1

#893 nhocbabi

nhocbabi

    biết vẽ rectang

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

Đã gửi 15 March 2010 - 05:30 PM

Bạn sai từ bước số 5 :

Chú ý cột cuối cùng SO chọn General
-> Bạn đế ý dữ liệu của bạn ở cột TC bị sai. Và giá trị của cột Handle khi bạn không làm đúng thao tác trên đã bị sửa nên chưa được.

Lỗi do giá trị HANDLE đã bị sửa do chưa làm đúng thao tác trên

HANDLE BLOCKNAME TEXT DT MD TC HS
'254178 sdd A-21 8631 49 5.8 - 2221
'254171 sdd A-47 4810 49 6 2.9 561
'25416A sdd A-46 11467 64 15-Jun 5.1 2465
'254163 sdd A-45 6601 50 15-May 6.5 1912

Bạn làm đúng y thao tác từ bước 4 đến bước 7 thử xem.
Chú ý -> Chuẩn xác.
Chúc thành công :cheers:

Vâng, ngày mai em sẽ check lại. Giờ em phải về rồi. Em chào cả nhà :D
  • 0

#894 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 16 March 2010 - 09:22 AM

Nay em có một việc này, biết là khó, không biết lisp có làm được không, nhưng em muốn hỏi thử, biết đâu lại được.
Em có file mô tả như sau:
http://www.cadviet.c...files/2/a_4.dwg
Dữ liệu đầu vào là bản đồ trong vòng tròn. Dữ liệu đầu ra là bảng bên cạnh.
Đoạn ống 29-28 có 2 tiểu khu là 45A và 46B đổ nước vào. Đoạn ống 30-31 chỉ có 1 tiểu khu 45B đổ nước vào. Nhiệm vụ của lisp là cần thống kê xem tiểu khu nào được những đoạn ống nào đổ nước vào.
Nhờ các bác trên Diễn đàn xem giúp.
Em xin chân thành cảm ơn!


Chào svba1608, và bác phanthanhbinh, Đề toán ra lần này có khó hơn đề toán trước, nhưng vẫn có khả thi giải được bài toán này! Thiep gợi ý như thế này:
- Từng đoạn ống, xác định được text số đầu ống ví dụ 29-28, tuy nhiên muốn đúng theo hướng dòng chảy thì hướng của polyline (ống) phải cùng hướng mũi tên dòng chảy (startpoint tại text 29, endpoint tại text 28)
- Từng đoạn ống sẽ tìm được điểm giữa, từ điểm giữa tìm được 2 đường ranh thửa (màu số 153) gần nó nhất, gọi là đường LWP.
- Từng LWP lọc lấy các point nút đỉnh cho vào 1 listpoint để lọc lấy các text A, B, C, D, E và 1 text số (dùng mã hàm (ssget “CP” listpoint ‘((0 . “TEXT”)))
- Từng các text A, B, C, D sẽ tìm được insertpoint và tìm được khoảng cách từ text đến LWP. So sánh để tìm ra 1 text chữ gần LWP nhất. Nối với text số để tạo nhãn của tiểu khu.
Tuy nhiên, trong bản vẽ của svba1608 có 1 đường ống rất dài từ điểm 18 -> 21 -> 25 -> 31 -> 30, không xử lý được, cần phải cắt ra 4 đoạn mới làm được.
Vài điều trao đổi với các bác, Lúc rày Thiep đang bận lắm, muốn ra lisp này nhưng đành chịu, nhờ các bác nào rảnh tay giúp svba1608 với.

Chào Svba, lisp này A Thiep phải mất 1 ngày CN tươi đẹp và chỉnh sửa thêm vào tối thứ 2. Bạn chạy thử nhé, nên nhớ:
- Lisp chỉ đúng khi đường ống cắt qua các text đầu ống (nét w = 0)
- chỉ đúng các bản vẽ cùng tỷ lệ bản đồ, nếu khác thì chưa chắc đúng. Các tên layer không thay đổi
- Các đường ống phải cắt từng đoạn và cùng chiều với mũi tên.
http://www.cadviet.c...es/2/svba_1.lsp
Chúc thành công!
  • 1

#895 svba1608

svba1608

    Tưởng Thị Tú Khuyên

  • Moderator
  • PipPipPipPipPipPipPip
  • 601 Bài viết
Điểm đánh giá: 620 (tốt)

Đã gửi 16 March 2010 - 10:07 AM

Chào Svba, lisp này A Thiep phải mất 1 ngày CN tươi đẹp và chỉnh sửa thêm vào tối thứ 2. Bạn chạy thử nhé, nên nhớ:
- Lisp chỉ đúng khi đường ống cắt qua các text đầu ống (nét w = 0)
- chỉ đúng các bản vẽ cùng tỷ lệ bản đồ, nếu khác thì chưa chắc đúng. Các tên layer không thay đổi
- Các đường ống phải cắt từng đoạn và cùng chiều với mũi tên.
http://www.cadviet.c...es/2/svba_1.lsp
Chúc thành công!


Cảm ơn anh Thiệp! Cảm ơn anh Thiệp rất nhiều!
Nhờ anh Thiệp giành thêm mấy phút tươi đẹp nữa viết giùm svba mấy dòng hướng dẫn sử dụng. Khi svba chạy lisp thì lisp báo như sau:

"Command: svba
undo Current settings: Auto = On, Control = All, Combine = Yes
Enter the number of operations to undo or [Auto/Control/BEgin/End/Mark/Back]
<1>: be
Command:
Select objects: 1 found

Select objects:
; error: bad argument type: consp nil"


PS : SVba don't stay up late :D . Good luck


Cảm ơn anh Tuệ nhiều! Lisp anh viết giùm em chạy rất tốt.
Svba cũng không muốn thức khuya, tiếc rằng thức khuya là "nghề" của svba cũng như bao anh chị em làm về công việc kỹ thuật khác, khi mà KTX ĐHKT có những phòng ít khi đi ngủ trước 2h đêm.
  • 0
http://khuyen.space

#896 nhocbabi

nhocbabi

    biết vẽ rectang

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

Đã gửi 16 March 2010 - 01:32 PM

Bác Tue_NV đâu rồi, cho em cảm ơn cái. Em thành công mỹ mãn rồi ạ! :D
  • 1

#897 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 16 March 2010 - 04:05 PM

Cảm ơn anh Thiệp! Cảm ơn anh Thiệp rất nhiều!
Nhờ anh Thiệp giành thêm mấy phút tươi đẹp nữa viết giùm svba mấy dòng hướng dẫn sử dụng. Khi svba chạy lisp thì lisp báo như sau:

"Command: svba
undo Current settings: Auto = On, Control = All, Combine = Yes
Enter the number of operations to undo or [Auto/Control/BEgin/End/Mark/Back]
<1>: be
Command:
Select objects: 1 found

Select objects:
; error: bad argument type: consp nil"

Sorry svba, Thiep đã xóa 3 dòng khi đã hoàn chỉnh bây giờ thì chép lại cho svba đây:
;| Lisp thong ke duong ong nuoc
copyright by thiep 03/2010|;
(defun SS-entlst (ss / c L)
(setq c -1)
(repeat (sslength ss)
(setq L (cons (ssname ss (setq c (1+ c)))
L
)
)
)
(reverse L)
)
;;;-------------------------
(defun filter (lstent otype olayer / kq)
(foreach pp lstent
(setq tt (entget pp))
(if (and
(member (cons 0 otype) tt)
(member (cons 8 olayer) tt)
)
(setq kq (append kq (list pp)))
)
)
kq
)
;;;======================
(defun timgan (p lst / dmin ppluu)
(foreach pp lst
(setq d (distance p pp))
(if (or (not dmin) (> dmin d))
(setq dmin d
ppluu pp
)
)
)
ppluu
)
;;;======================
(defun dxf (code ent)
(cdr (assoc code (entget ent)))
)
;;;;;;;;;;;;;;;;;;;;;;;;;
(defun SAVE_MODE ()
(setq OLD_OSMODE (getvar "OSMODE")
OLD_ORTHOMODE (getvar "ORTHOMODE")
)
(setvar "cmdecho" 0)
(setvar "OSMODE" 0)
)
(defun RESTORE ()
(setvar "osmode" OLD_OSMODE)
(setvar "ORTHOMODE" OLD_ORTHOMODE)
)
;|===========================================================
MAIN LISP
===========================================================|;
(defun c:svba (/ lstent lstLWP_tn lstLWP_vh lsttextt tsi
Tstyle lstpoCP lstenttext lstLWP_vh_text
TblObj p1 rows nRow nCol
objLwp lstpoF len midpo param
ang mfen1 mfen2 ss lstLWP2
lsttext_ong po str val
lstval lstvalpo doan pogan tenkhu
strso lstpo p2 en
)
(or ActDoc
(setq ActDoc (vla-get-ActiveDocument (vlax-get-acad-object)))
)
(or *Model* (setq *Model* (vla-get-ModelSpace ActDoc)))
(vla-StartUndoMark ActDoc)
(SAVE_MODE)
(setq lstent (SS-entlst (ssget '((0 . "LWPOLYLINE,TEXT")
(8 . "vh,thoatnuoc,sttnut,sttkhu")
)
)
)
lstLWP_tn (filter lstent "LWPOLYLINE" "thoatnuoc")
lstLWP_vh (filter lstent "LWPOLYLINE" "vh")
lsttextt (filter lstent "TEXT" "sttnut")
)
(setq p1 (append (acet-list-remove-nth 2 (getvar "extmin")) (list 0.0))
rows (length lstLWP_tn)
)
(setq tsi (acet-dxf 40 (entget (nth 0 lsttextt)))
Tstyle (acet-dxf 7 (entget (nth 0 lsttextt)))
)
(setq oldtsi tsi)
(setq tsi (getreal
(strcat "\nChon do cao text <" (rtos oldtsi 2 0) "> : ")
)
)
(if (null tsi)
(setq tsi oldtsi)
)
;;;------------------
(foreach entLWP2 lstLWP_vh
(if (or (vlax-curve-isClosed entLWP2)
(eq (car lstpoCP) (last lstpoCP))
)
(progn
(setq lstpoCP (ACET-GEOM-VERTEX-LIST entLWP2))
(setq lstenttext
(SS-entlst
(ssget "CP"
lstpoCP
'((0 . "TEXT") (8 . "sttkhu"))
)
)
)
(setq lstLWP_vh_text
(cons (cons entLWP2 lstenttext) lstLWP_vh_text)
)

)
)
)
;;;---------------

(if (> (atof (substr (getvar "ACADVER") 1 4)) 16.0)
(progn
(setq TblObj (vla-addtable
*Model*
(vlax-3d-point p1)
(1+ rows)
3
tsi
(* 6 tsi)
)
)
(vla-UnMergeCells TblObj 0 0 0 2)
(vla-MergeCells TblObj 0 0 1 2)
(vla-put-vertcellmargin TblObj (* 0.5 tsi))
(mapcar '(lambda (x) (vla-setTextHeight TblObj x tsi))
(list acTitleRow acHeaderRow acDataRow)
)
(mapcar
'(lambda (x) (vla-setAlignment TblObj x acMiddleCenter))
(list acTitleRow acHeaderRow acDataRow)
)
(mapcar
'(lambda (x) (vla-SetTextStyle TblObj x Tstyle))
(list acTitleRow acHeaderRow acDataRow)
)
(vla-setText TblObj 0 0 "§O¹N èNG")
(vla-setText TblObj 0 1 "TIÓU KHU")
(vla-SetColumnWidth TblObj 0 (* 8.4 tsi))
(setq nRow 1)

;;; ===================;tung duong ong
(foreach entLWP lstLWP_tn
(setq objLwp (vlax-ename->vla-object entLWP)
lstpoF (ACET-GEOM-VERTEX-LIST entLWP)
len (vla-get-Length objLwp)
midpo (vlax-curve-getPointAtDist objLwp (/ len 2))
param (vlax-curve-getParamAtPoint objLwp midpo)
ang (angle '(0 0 0) (vlax-curve-getFirstDeriv objLwp param))
mfen1 (polar midpo (+ ang (/ pi 2)) 75)
mfen2 (polar midpo (- ang (/ pi 2)) 75)
ss (ssget "F" lstpoF '((0 . "TEXT") (8 . "sttnut")))
lstLWP2 (SS-entlst (ssget "F"
(list mfen1 mfen2)
'((0 . "LWPOLYLINE") (8 . "vh"))
)
)
)
(if ss
(progn
(setq lsttext_ong (SS-entlst ss))
;;; ==============;tung text chu dau ong sttnut
(foreach ent lsttext_ong
(setq po (dxf 10 ent)
str (dxf 1 ent)
val (read str)
lstval (append (list str) lstval)
)
)
(setq doan (strcat (nth 1 lstval) "-" (nth 0 lstval)))
(and doan (vla-setText TblObj nRow 0 doan))
(setq nCol 1)
)
)
;;; =========================;tung duong bao / 2
(foreach entLWP2 lstLWP2
(setq lstenttext
(acet-dxf entLWP2 lstLWP_vh_text)
lstpo nil
lstvalpo nil
)
;;; ====================;tung text trong duong bao
(foreach ent lstenttext
(setq po (dxf 10 ent))
(if (distof (dxf 1 ent))
(setq strso (dxf 1 ent))
(progn
(setq str (dxf 1 ent)
lstpo (cons po lstpo)
lstvalpo (cons (cons po str) lstvalpo)
)
)
)
)
(setq pogan (timgan midpo lstpo)
tenkhu (strcat strso (acet-dxf pogan lstvalpo))
)
(and tenkhu (vla-setText TblObj nRow nCol tenkhu))
(setq nCol (1+ nCol))
)
(setq nRow (1+ nRow))
)
) ;END progn
) ;END IF
(vla-Update TblObj)
(setq en (entlast)
ss (acet-list-to-ss (list en))
)
(setq
p2 (acet-ss-drag-move ss p1 "\n<<< Place Table >>> ")
)
(vla-put-InsertionPoint TblObj (vlax-3d-point p2))
(vla-Update TblObj)
(vlax-release-object TblObj)
(RESTORE)
(vla-StartUndoMark ActDoc)
(princ "\nThank you for use my lisp: svba.lsp!")
(princ)
)

  • 1

#898 svba1608

svba1608

    Tưởng Thị Tú Khuyên

  • Moderator
  • PipPipPipPipPipPipPip
  • 601 Bài viết
Điểm đánh giá: 620 (tốt)

Đã gửi 16 March 2010 - 04:28 PM

Cảm ơn anh Thiệp!
Svba đã load lisp mới và thử lại nhưng vẫn bị lỗi sau:

Command: svba

Select objects: 1 found

Select objects: 1 found, 2 total

Select objects: 1 found, 3 total

Select objects:

Chon do cao text : 5
; error: bad argument type: stringp nil

Nhờ anh Thiệp xem giùm!
  • 0
http://khuyen.space

#899 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 16 March 2010 - 04:45 PM

Cảm ơn anh Thiệp!
Svba đã load lisp mới và thử lại nhưng vẫn bị lỗi sau:
Command: svba
Select objects: 1 found
Select objects: 1 found, 2 total
Select objects: 1 found, 3 total
Select objects:
Chon do cao text : 5
; error: bad argument type: stringp nil

Nhờ anh Thiệp xem giùm!

Bản vẽ của svba đã sửa lại chưa? Đường ống dài đi qua các nút 18, 21, 25, 31,30 svba đã cắt từng khúc tại các nút chưa? Tại điểm nút 18, chưa bị 2 đường ống cắt qua text 18, svba phải sửa lại.
  • 1

#900 svba1608

svba1608

    Tưởng Thị Tú Khuyên

  • Moderator
  • PipPipPipPipPipPipPip
  • 601 Bài viết
Điểm đánh giá: 620 (tốt)

Đã gửi 16 March 2010 - 05:33 PM

Bản vẽ của svba đã sửa lại chưa? Đường ống dài đi qua các nút 18, 21, 25, 31,30 svba đã cắt từng khúc tại các nút chưa? Tại điểm nút 18, chưa bị 2 đường ống cắt qua text 18, svba phải sửa lại.


Dạ, đường ống dài đi qua các nút 18,21,25,31,30 em đã cắt từ khi sử dụng lisp tính chiều dài của bác Bình. Vừa rồi em cũng sửa lại nhưng em vẫn chưa chạy được lisp. Nhờ anh Thiệp check giùm:

"Command: svba

Select objects: Specify opposite corner: 644 found

Select objects:

Chon do cao text : 20
bad argument type: lselsetp nil"
  • 0
http://khuyen.space