Jump to content
InfoFile
Tác giả: phamthanhbinh
Bài viết gốc: 156138
Tên lệnh: mkatb
viết lisp đánh số các đọan thẳng?


Hề hề hề,
Bạn cần rút kinh nghiệm, hãy suy nghĩ thấu đáo các vấn đề có liuên quan rồi hãy post yêu cầu nhé.
Thực ra cái yêu cầu của bạn không quá khó nhưng bạn đặt vấn đề không rõ ràng nên làm cho vấn đề phức tạp lên.
Bạn nên đọc thêm về các vấn đề có liên quan tới block thuộc tính và tìm hiểu thêm về lisp để có thể đọc và hiểu được cái lisp nói...
>>

Hề hề hề,
Bạn cần rút kinh nghiệm, hãy suy nghĩ thấu đáo các vấn đề có liuên quan rồi hãy post yêu cầu nhé.
Thực ra cái yêu cầu của bạn không quá khó nhưng bạn đặt vấn đề không rõ ràng nên làm cho vấn đề phức tạp lên.
Bạn nên đọc thêm về các vấn đề có liên quan tới block thuộc tính và tìm hiểu thêm về lisp để có thể đọc và hiểu được cái lisp nói gì.
Thực ra bạn không hiểu cái lisp mình viết nên mới có những phát biểu chưa chuẩn.
Khi lisp yêu cầu bạn Nhap ten block moi ở đây là bạn nhập tên mới cho cái block "test" đã có sẵn trên bản vẽ của bạn để đổi tên cái block đó đi. Bởi vì mình không biết cái block tên test đó của bạn có thực sự phù hợp với cái block thuộc tính test mà mình sẽ tạo ra trong lisp để điền vào các vị trí bạn cần. Vì thế mình cứ đổi tên chúng đi thành tên mới do bạn chọn để bạn có thể sử dụng lại sau này nếu cần thiết.
Còn cái block thuộc tính test mình sẽ tạo mới nó và dùng cho lisp của mình để đảm bảo hoàn toàn các yêu cầu đặt ra trong lisp bạn ạ.
Vậy nên việc bạn yêu cầu phải bỏ điểm nhập cũng như bỏ cái việc nhập tên mới là không thể chiều bạn được
Lisp chỉ yêu cầu bạn nhập tên mới khi trên bản vẽ của bạn đã có block tên test mà thôi, còn nếu chưa có nó sẽ tự tạo ra block test.
Và đây là cái mình đã cố để hiểu cái yêu cầu của bạn và làm thử. bạn dùng xem có ý kiến gì ta sẽ trao đổi tiếp nhé.

Hy vọng bạn hài lòng. Lisp này có thể đáp ứng đủ những yêu cầu mà bạn đã nêu ra, kể cả trường hợp số có chữ đi kèm. Nếu không muốn số có kèm theo text thì khi lisp yêu cầu bạn nhap cac ky tu di kem bạn cứ nhấn enter để bỏ qua. Nếu bạn không muốn đánh số cho các line ngang thì khi lisp yêu cầu bạn Chon tap cac doan thang theo phương x bạn nhấn enter hai lần để bỏ qua việc chọn này và lisp sẽ yêu cầu bạn chon tap cac doan thang thep phuong y.
Chúc bạn vui.
<<

Filename: 156138_mkatb.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 156093
Tên lệnh: retn
Viết lisp theo yêu cầu [phần 2]

Hề hề hề,
Nó đây nè. Dùng thử coi nhé. Chú ý rằng khi quét vùng chọn tren trắc dọc, chớ có ôm nhầm mấy em ở khu lý trình vào nghen. Vì các em này có trùng tên, trùng layer và cả trùng màu nữa nên mình chưa loại được. nếu tách được mấy em này qua lớp khác thì tuyệt hảo luôn.
Khi quét vùng chọn các trăc ngang, lưu ý sao cho cái trắc ngang đầu tiên đúng với cái vị trí trên...
>>

Hề hề hề,
Nó đây nè. Dùng thử coi nhé. Chú ý rằng khi quét vùng chọn tren trắc dọc, chớ có ôm nhầm mấy em ở khu lý trình vào nghen. Vì các em này có trùng tên, trùng layer và cả trùng màu nữa nên mình chưa loại được. nếu tách được mấy em này qua lớp khác thì tuyệt hảo luôn.
Khi quét vùng chọn các trăc ngang, lưu ý sao cho cái trắc ngang đầu tiên đúng với cái vị trí trên trắc dọc nhé.

Do cái hình trắc ngang trắc dọc của bạn hơi ti hin nên bạn có thể chơi làm nhiều phát cho dễ kiểm hoặc chơi tổng một phát cũng Ok. mà hình như số trắc ngang còn thiếu cũng khơ khớ thì phải.... Chạy phát một thì chỉ tới trắc ngang TC95 là hết trong khi trên trắc dọc có tới quá TC105 lận. hề hề hề, kiểu này khó mà lười lắm........
<<

Filename: 156093_retn.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 156105
Tên lệnh: mkatb
viết lisp đánh số các đọan thẳng?

Hề hề hề,
Về các yêu cầu bổ sung của bạn:
1/- Không nên bỏ chức năng này vì việc tạo block phải cần tới điểm chuẩn của block. Nếu bạn không chọn điểm mà để lisp tự lấy một điểm trên bản vẽ sẽ rất dễ bị trùng vào các đối tượng khác bạn ạ và bạn sẽ không thể kiểm tra được nó. Còn nếu bạn vẫn cứ muốn bỏ thì hãy tự thay dòng code:
(setq pt (getpoint...
>>

Hề hề hề,
Về các yêu cầu bổ sung của bạn:
1/- Không nên bỏ chức năng này vì việc tạo block phải cần tới điểm chuẩn của block. Nếu bạn không chọn điểm mà để lisp tự lấy một điểm trên bản vẽ sẽ rất dễ bị trùng vào các đối tượng khác bạn ạ và bạn sẽ không thể kiểm tra được nó. Còn nếu bạn vẫn cứ muốn bỏ thì hãy tự thay dòng code:
(setq pt (getpoint "\n Chon diem chuan"))
thành dòng code:
(setq pt (list 0 0 0))
2/- Mình bổ sung cho bạn thêm phương án chọn lựa là đánh số theo phương x hay phương y. Nếu bạn chọn phương y thì lisp sẽ xoay block 90 độ và đánh số theo trật tự từ trái qua phải (chứ không phải từ phải qua trái như cái hình bạn post đâu nhé). Còn nếu bạn chọn phương x hay đúng hơn là không chọn phương y, thì lisp sẽ mặc định là phương x và làm nguyên như cũ tức là đánh số từ dưới lên trên. Như vậy tùy ý bạn sử dụng sao cho sướng con mắt bên phải, lé con mắt bên trái là được. Hề hề hề.

Vì mình làm vội nên lisp chưa trau chuốt lắm và hơi lủng củng, nếu bạn muốn có thể tự chỉnh lại cho nó hợp lý hơn.
<<

Filename: 156105_mkatb.lsp
Tác giả: hochoaivandot
Bài viết gốc: 156072
Tên lệnh: 12
viết lisp đánh số các đọan thẳng?


Lisp sau mình viết không biết có trúng ý của quan08 không?

- Mình không đưa kết quả ra block thuộc tính. Vì mình thấy không cần thiết. Vả lại nếu vậy bạn cần phải tạo thuộc tính, rồi tạo Block. Còn nếu lấy Block từ 1 file sẵn thì hay bị sai đơn vị. Mình thấy yêu cầu của bạn có thể xuất dưới dạng Text nên viết như trên.
Nếu banj vẫn muốn KQ dạng Block...
>>


Lisp sau mình viết không biết có trúng ý của quan08 không?

- Mình không đưa kết quả ra block thuộc tính. Vì mình thấy không cần thiết. Vả lại nếu vậy bạn cần phải tạo thuộc tính, rồi tạo Block. Còn nếu lấy Block từ 1 file sẵn thì hay bị sai đơn vị. Mình thấy yêu cầu của bạn có thể xuất dưới dạng Text nên viết như trên.
Nếu banj vẫn muốn KQ dạng Block thuộc tính thì mình sửa cho.
- Các đối tượng chọn có thể là LINE, LWPOLYLINE, POLYLINE
<<

Filename: 156072_12.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 156074
Tên lệnh: mkatb
viết lisp đánh số các đọan thẳng?


Hề hề hề,
Chớ có nóng vội. Của bạn đây, nếu dùng chưa được thì hãy post lên nhé.

Đã test thử với bản vẽ bạn gửi bao gồm có lwpolyline và line thì Ok. Còn với polyline thì chửa test. Bạn hãy tự test nhé.
Dù là lwpolyline hay polyline thì cái điểm đặt block sẽ nằm cách điểm giữa của phân đoạn thứ nhất một khoảng là 300 theo phuong y. Đồng thời nó sẽ so sánh...
>>

Hề hề hề,
Chớ có nóng vội. Của bạn đây, nếu dùng chưa được thì hãy post lên nhé.

Đã test thử với bản vẽ bạn gửi bao gồm có lwpolyline và line thì Ok. Còn với polyline thì chửa test. Bạn hãy tự test nhé.
Dù là lwpolyline hay polyline thì cái điểm đặt block sẽ nằm cách điểm giữa của phân đoạn thứ nhất một khoảng là 300 theo phuong y. Đồng thời nó sẽ so sánh độ dài của phân đoạn này để đánh số thứ tự chứ hổng phải tổng chiều dài đâu nhé.
Cái block đánh số này mình thiết kế theo mẫu của bạn gửi nhưng không phải là có tên là TT mà tên là test với thuộc tính là tt cho phép người dùng nhập giá trị.
cái block tt của bạn tuy cũng có thuộc tính nhưng đó là thuộc tính chết chứ người dùng không thể thay đổi giá trị thuộc tính được. bởi vậy nên mình không dùng cho lisp này.
Hy vọng bạn hết bức xúc hỉ.....
<<

Filename: 156074_mkatb.lsp
Tác giả: gia_bach
Bài viết gốc: 155928
Tên lệnh: tdpl
lisp lấy toạ độ XYZ đường 3D polyline

Lisp lấy toạ độ x,y,z của một đường 3D polyline và 2D (LWPOLYLINE).

Filename: 155928_tdpl.lsp
Tác giả: gia_bach
Bài viết gốc: 155928
Tên lệnh: tdpl1
lisp lấy toạ độ XYZ đường 3D polyline

Lisp lấy toạ độ x,y,z của một đường 3D polyline và 2D (LWPOLYLINE).

Filename: 155928_tdpl1.lsp
Tác giả: pdle
Bài viết gốc: 155804
Tên lệnh: cc
From: Viết lisp theo yêu cầu [phần 2]


Của anh đây ạ :


Nhân tiện cho em hỏi là biến nào lưu giữ đơn vị hiện hành của CAD ạ ?

Filename: 155804_cc.lsp
Tác giả: pdle
Bài viết gốc: 155809
Tên lệnh: coa
lenh copy align lien tuc


Em đã sửa lại như sau:

Filename: 155809_coa.lsp
Tác giả: Tue_NV
Bài viết gốc: 155819
Tên lệnh: coa
lenh copy align lien tuc

Bạn Quang Duc Ha sử dụng code Tue_NV đã sửa lại nhé :

Filename: 155819_coa.lsp
Tác giả: pdle
Bài viết gốc: 155799
Tên lệnh: command
lisp Thêm ghi chú sau khi đánh lệnh trong lisp

Thế thì anh có thể làm như sau:

Filename: 155799_command.lsp
Tác giả: pdle
Bài viết gốc: 155800
Tên lệnh: coa
lenh copy align lien tuc

Anh thử cái này xem thế nào ạ :

Filename: 155800_coa.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 155613
Tên lệnh: antxt
Viết lisp theo yêu cầu [phần 2]

Hề hề hề,
Dùng cái ni nó sẽ ẩn tiệt những thằng cùng layer mà không phải text hoặc là text mà không có 3 ký tự đầu giống text mẫu:

Hề hề hề,
Nếu bạn chịu khó quy hoạch cái bản vẽ cho nó có trật tự thì có thể chơi thay text hàng loạt được, tuy cũng không hẳn là dễ.
Hề hề hề,...

Filename: 155613_antxt.lsp
Tác giả: ketxu
Bài viết gốc: 155660
Tên lệnh: tb
Tính chiều dài trung bình các đoạn *Line

- Tính chiều dài trung bình của các đoạn Line, Pline, LWPline, SPline, MLine...

Filename: 155660_tb.lsp
Tác giả: pdle
Bài viết gốc: 155773
Tên lệnh: jl
Lisp JL - nối 2 đường Line ngắt quãng !

Anh sử dụng lisp này xem, em thấy dùng ổn!

Filename: 155773_jl.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 155484
Tên lệnh: retn
Viết lisp theo yêu cầu [phần 2]

Hề hề hề,
bạn xài thử cái nàu coi đã ưng cái bụng chưa hè???

Filename: 155484_retn.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 155583
Tên lệnh: antxt
Viết lisp theo yêu cầu [phần 2]

Hề hề hề,
Cái vụ này bạn trình bày chưa rõ ý nên bác Ketxu đã làm cho bạn cái lisp mà nó xử cái đuôi. Chắc bạn dùng sẽ không thoải mái lắm vì nó ẩn khiếp quá.....
Mình làm thử cái này xem bạn có ưng không nhé:

Hề hề hề, ráng dùng thử và cho ý kiến nghen.
Bạn chú ý cách xài cái lisp này nhé: gõ lệnh, chọn vào cái text mà bạn muốn giữ lại (lưu ý là lisp...
>>

Hề hề hề,
Cái vụ này bạn trình bày chưa rõ ý nên bác Ketxu đã làm cho bạn cái lisp mà nó xử cái đuôi. Chắc bạn dùng sẽ không thoải mái lắm vì nó ẩn khiếp quá.....
Mình làm thử cái này xem bạn có ưng không nhé:

Hề hề hề, ráng dùng thử và cho ý kiến nghen.
Bạn chú ý cách xài cái lisp này nhé: gõ lệnh, chọn vào cái text mà bạn muốn giữ lại (lưu ý là lisp sẽ chỉ giữ lại các text trên cùng layer của text này và có tối thiểu 3 ký tự đầu tiên trùng với 3 ký tự đầu của text mẫu này, và chỉ xóa các text khác trên cùng layer với text mẫu)

@Ketxu: Bác có thể xóa cái (cons 0 "*TEXT") trong (ssget "X" (list (cons 0 "*TEXT") (cons 1 (strcat (getstring "\nPrefix") "*")))) đi được không bác nhể
<<

Filename: 155583_antxt.lsp
Tác giả: hakhoailang
Bài viết gốc: 155328
Tên lệnh: os e1 %2B%2B%2B%2B%2B %2B%2B%2B%2B%2B%2B %2B%2B%2B%2B %2B%2B%2B %2B%2B %2B - -- --- ---- ----- ------ 1 2 3 4 5 6 7 8 9 10 11 0 goc tcd
Viết lisp theo yêu cầu [phần 2]
sẵn đay nhờ bác xem hộ em cái này luôn bác à .
nó chống các lip khác khi chạy nó lên và nó không lưu tính chất của text cũ . nó đổi màu text và làm đậm nét hơn
em thì lại muốn nó vẫn mang tính chất của text cũ vì mình chỉ cần thay số liệu thôi mà bác .

Filename: 155328_os_e1_%2B%2B%2B%2B%2B_%2B%2B%2B%2B%2B%2B_%2B%2B%2B%2B_%2B%2B%2B_%2B%2B_%2B_-_--_---_----_-----_------_1_2_3_4_5_6_7_8_9_10_11_0_goc_tcd.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 155336
Tên lệnh: chgt
Viết lisp theo yêu cầu [phần 2]

Hề hề hề,
Phải chăng bạn cần cái lisp thế này:

Hế hề hề, nếu bạn muốn ghép nó vào lisp nào thì chỉ việc copy và paste nó vào thôi nhé. Nhớ các lệnh khi chạy lisp.

Filename: 155336_chgt.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 155325
Tên lệnh: gdd
Viết lisp theo yêu cầu [phần 2]

Hề hề hề,
Có chi mà bạn vạ vật vậy hỉ???? Cái yêu cầu của bạn là chọn hai điểm trên một đường đã có trước để ghi độ dốc thì không quá khó, Nó đây nè:

Hề hề hề, hết bức xúc chưa hè????

Filename: 155325_gdd.lsp

Trang 31/330

31