Chuyển đến nội dung
Diễn đàn CADViet
Duong Nhat Duy

Lisp tính cao độ trắc ngang

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

Gửi đến các bạn 1 lisp tính cao độ trên trắc ngang. Tuy không phải là 1 vấn đề mới mẻ và thực tế cũng có rất nhiều lisp về đề bài này rồi, nhưng mình vẫn muốn viết nó, với mục tiêu là dễ sử dụng, tính thẩm mỹ cao và có thể tùy biến các thông số.

 

Công dụng

Screenshot_TCD.png.f466eea358917cc38d960ba9306e577f.png

- Tính cao độ pick điểm trên trắc ngang từ 1 điểm cơ sở (cao độ điểm cơ sở có thể nhập tay hoặc pick chọn Text/Block Att)

- Có thể cập nhật lại cao độ khi cao độ điểm cơ sở thay đổi

- Có thể tùy chỉnh tỉ lệ đứng, ứng dụng để tính cao độ trên trắc dọc

- Có thể tùy chỉnh cao chữ, kích thước mũi tên, ...

 

Tên lệnh

   TCS - Thiết lập thông số (không bắt buộc, có thể bỏ qua)

   TCD - Tính cao độ

   CNCD - Cập nhật cao độ

 

TCD - Tính cao độ

Tính cao độ pick điểm từ 1 điểm cơ sở (cao độ điểm cơ sở có thể nhập tay hoặc pick chọn Text/Block Att)

1979305478_TCD(Noted).gif.a44befa394d163fa972d4dbcb8c85b91.gif

 

CNCD - Cập nhật cao độ

Cập nhật cao độ từ 1 điểm cơ sở (cách nhập điểm cơ sở tương tự lệnh TCD).

Đối tượng cập nhật có thể là Block Att hoặc cụm đối tượng Text, Pline được tạo ra từ lệnh TCD như trên.

CNCD.gif.1f4f090ef2e5caf43b8b46e5da3e74ec.gif

 

Link download

https://drive.google.com/drive/u/1/folders/1IW78bQJ7kDaovc2obdweBkV_ParNiNa7

 

Chúc các bạn thành công :)))

  • Like 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
6 phút trước, Xuân Lộc đã nói:

này có thể chỉnh sửa như nào để đánh được cos cao độ bên dân dụng ạ

Bạn cho xin vài ví dụ minh họa nhé chứ mình không làm dân dụng nên chưa hình dung ra.

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
18 giờ trước, Xuân Lộc đã nói:

em gửi anh bản cad ạ

Drawing1.dwg

 

3 giờ trước, quangcda đã nói:

Của Xuân Lộc thì tạo field trong attribute tiện hơn! 

Mình đã thêm option chọn Block Att trong lệnh TCD và option thêm dấu + trong lệnh TCS rồi, bạn cập nhật lại trong link ggdrive nhé !

  • Like 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
9 giờ trước, Duong Nhat Duy đã nói:

 

Mình đã thêm option chọn Block Att trong lệnh TCD và option thêm dấu + trong lệnh TCS rồi, bạn cập nhật lại trong link ggdrive nhé !

em test thử thì lisp chạy ngon ở mẫu 1 có 1 tag att. mẫu 2 có 2 tag em muốn nó đánh được 2 tag và giữ được nội dung phía trước là FFL= và SFL= ạ. riêng cái 0.000 phải có dấu cộng trừ vì nó theo qcvn ạ

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
12 giờ trước, Xuân Lộc đã nói:

em test thử thì lisp chạy ngon ở mẫu 1 có 1 tag att. mẫu 2 có 2 tag em muốn nó đánh được 2 tag và giữ được nội dung phía trước là FFL= và SFL= ạ. riêng cái 0.000 phải có dấu cộng trừ vì nó theo qcvn ạ

Cái này mình chịu nhé, nó quá cụ thể cho chuyên ngành rồi !

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
34 phút trước, Duong Nhat Duy đã nói:

Cái này mình chịu nhé, nó quá cụ thể cho chuyên ngành rồi !

này có thì tiện, ko có cũng ko sao ạ, làm quen cũng có nhiều thủ thuật để nó nhanh

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
Vào lúc 11/12/2024 tại 07:38, quangcda đã nói:

Của Xuân Lộc thì tạo field trong attribute tiện hơn! 

tạo field nhưng mà mk hay tạo block để nó nhảy dữ liệu, sửa 1 cái nhảy nhiều cái lên có field trong block toàn lỗi á

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
7 phút trước, Xuân Lộc đã nói:

tạo field nhưng mà mk hay tạo block để nó nhảy dữ liệu, sửa 1 cái nhảy nhiều cái lên có field trong block toàn lỗi á

Cái đề bài của bạn muốn tạo field thì tạo được nhưng nó cần link với 1 thằng đối tượng gốc nào đó (trên trục ngang +0.00). Và toàn bộ quá trình vẽ ko đc xóa thằng gốc đó.

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

@3duy :

sao mình pick điểm không thẳng hàng với cái block gốc nhỉ ? vị trí _per nó tự bay sang chỗ khác, code tính startpoint của Duy lấy điểm mốc tại đâu ?.

Với nữa là có thể thêm %%p vào text nếu pick tại 0.00 nữa càng đẹp.

screenshot_1735889713.png

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

Với hỏi 1 chút:

1. Khi đánh cao độ như này, có chục cái cao độ được tính với cao độ gốc 10.00, giờ bên địa hình thay đổi, gốc đổi thành 11.00, liệu có thể thêm option để pick mốc cũ, và quét block cao độ để update toàn bộ các block cao độ đó được cập nhật theo giá trị mới mà không phải chạy TCD lại từ đầu không ?.

2. 1 trường hợp nữa là mốc thì vẫn vậy, nhưng có một số chi tiết thay đổi, VD  cao độ cống, nâng lên hạ xuống chút. Cần đánh lại cao độ này, vẫn tính từ mốc cũ. Liệu có thể thêm option để quét các block cao độ thay đổi và update lại không ?.

 

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
14 phút trước, Zoi đã nói:

@3duy :

sao mình pick điểm không thẳng hàng với cái block gốc nhỉ ? vị trí _per nó tự bay sang chỗ khác, code tính startpoint của Duy lấy điểm mốc tại đâu ?.

Với nữa là có thể thêm %%p vào text nếu pick tại 0.00 nữa càng đẹp.

Trước khi chọn block hay nhập cao độ có dòng lệnh hỏi nhập startpoint đó bạn, bạn bắt điểm đúng cái đầu mũi tên là được.

Về cái thêm %%p bạn có thể tự sửa trong lisp nhé, cái này hơi cá nhân mình không thêm vào được, có thể người cần người không cần.

 

6 phút trước, Zoi đã nói:

Với hỏi 1 chút:

1. Khi đánh cao độ như này, có chục cái cao độ được tính với cao độ gốc 10.00, giờ bên địa hình thay đổi, gốc đổi thành 11.00, liệu có thể thêm option để pick mốc cũ, và quét block cao độ để update toàn bộ các block cao độ đó được cập nhật theo giá trị mới mà không phải chạy TCD lại từ đầu không ?.

2. 1 trường hợp nữa là mốc thì vẫn vậy, nhưng có một số chi tiết thay đổi, VD cao độ cống, nâng lên hạ xuống chút. Cần đánh lại cao độ này, vẫn tính từ mốc cũ. Liệu có thể thêm option để quét các block cao độ thay đổi và update lại không ?.

1 và 2 tương đương nhau, đều là chọn tất cả block cần cập nhật và chọn lại điểm cơ sở. Cái này mình sẽ nghiên cứu bổ sung sau bạn nhé !

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
1 giờ trước, Duong Nhat Duy đã nói:

1 và 2 tương đương nhau, đều là chọn tất cả block cần cập nhật và chọn lại điểm cơ sở. Cái này mình sẽ nghiên cứu bổ sung sau bạn nhé !

Thanks Duy đã quan tâm. Mình nghĩ tới cái này bởi khi mở rộng khả năng pick Att là có thể ứng dụng đánh cao độ cho nhà cao tầng chẳng hạn. Có thể copy array block cao độ trước. Và TCD chọn mốc + quét blocks update. Trường hợp các tầng thay đổi hoặc code 0.00 đổi thành code khác cũng update rất nhanh và tiện lợi.

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
Vào lúc 3/1/2025 tại 16:53, Zoi đã nói:

Thanks Duy đã quan tâm. Mình nghĩ tới cái này bởi khi mở rộng khả năng pick Att là có thể ứng dụng đánh cao độ cho nhà cao tầng chẳng hạn. Có thể copy array block cao độ trước. Và TCD chọn mốc + quét blocks update. Trường hợp các tầng thay đổi hoặc code 0.00 đổi thành code khác cũng update rất nhanh và tiện lợi.

Mình đã thêm lệnh CNCD, dùng tương tự lệnh TCD, cụ thể bạn xem lại hướng dẫn bên trên nhé !

  • Like 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
Vào lúc 3/1/2025 tại 16:59, Duong Nhat Duy đã nói:

Mình đã thêm lệnh CNCD nhé, dùng tương tự lệnh TCD nhưng ở bước sau, thay vì chọn điểm có thể chọn hàng loạt block (hoặc text rời, nhưng phải là text kết quả của lệnh TCD trước đó). Bạn down lại trong link gg, tạm thời chưa có hướng dẫn nhé !

Cám ơn Duy, lisp rất ok. 

Tuy nhiên có 1 câu hỏi nữa. Mình dời trục tọa độ sang vị trí khác (không còn là World UCS nữa). Xong chạy CNCD, thì thấy cao độ update khác, hình như là lisp căn cứ vào mốc UCS để tính cao độ đúng không ?. 

Và như vậy thì việc pick mốc ban đầu chỉ làm việc tốt với WCS.

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
4 giờ trước, Zoi đã nói:

Cám ơn Duy, lisp rất ok. 

Tuy nhiên có 1 câu hỏi nữa. Mình dời trục tọa độ sang vị trí khác (không còn là World UCS nữa). Xong chạy CNCD, thì thấy cao độ update khác, hình như là lisp căn cứ vào mốc UCS để tính cao độ đúng không ?. 

Và như vậy thì việc pick mốc ban đầu chỉ làm việc tốt với WCS.

Cái này trước do mình sơ suất chưa tính đến chuyện UCS thôi. Mình đã fix lại rồi, bạn down lại trong link nhé !

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

×