Chuyển đến nội dung
Diễn đàn CADViet
huunhantvxdts

[Yêu cầu] lisp điền cao độ cho lớp đánh cấp

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

Mình đang làm 1 công việc thấy quá thủ công là phải điền cao độ cho từng trắc ngang. Đang muốn tự động 1 tí cho đỡ phải mất công và đang mày mò viết lisp để làm công việc này. thuật toán là zoom đến từng trắc ngang sau đó lấy dữ liệu để xử lý.Quá trình làm thì bị  vướng mắc.(từ 1 điểm đã xác định làm sao tìm đường thẳng đi qua nó) mục đích để là chọn đường thẳng đó

Với lại không biết thuật toán của mình có làm được hay không?

mong mọi người giúp đỡ

đây là file yêu cầu.

http://www.cadviet.com/upfiles/3/66960_trac_ngang_in__updte_new_1.dwg

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

Theo mình vấn đề của bạn không khó

Mình thấy bạn dùng VBA được nên mình nghĩ bạn nên xử lý bằng VBA ?

1.Tạo 1 Block thuộc tính có 2 Tag có tên là: Chieudai va Caodo

2. Nhập vào cao độ gốc (nên lấy cao độ gốc tại tim đường)

3.Dùng bộ lọc Selectionset chọn các polyline đánh cấp có layer riêng

4.Tính khoảng cách theo phương đứng và ngang so với điểm tim

5. Update Khoảng cách này vào Block thuộc tính

6.Kết thúc

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

Theo mình vấn đề của bạn không khó

Mình thấy bạn dùng VBA được nên mình nghĩ bạn nên xử lý bằng VBA ?

1.Tạo 1 Block thuộc tính có 2 Tag có tên là: Chieudai va Caodo

2. Nhập vào cao độ gốc (nên lấy cao độ gốc tại tim đường) 

3.Dùng bộ lọc Selectionset chọn các polyline đánh cấp có layer riêng

4.Tính khoảng cách theo phương đứng và ngang so với điểm tim

5. Update Khoảng cách này vào Block thuộc tính

6.Kết thúc

Cám ơn bạn quan tâm cái nay mình nghĩ lisp cũng được VBA cũng được vấn đề là xử lý text làm sao cho đúng bởi đây là 1 rừng các text cao độ (mình đang bí ở chỗ làm sao để xử lý lấy được cao độ đó) ở đây mình đang làm thuật toán là Zoom (có thể là khuân vùng ) từng trắc ngang để xử lý và cũng đang bí 

chứ các bước ở trên thì mình đã nghỉ đến rồi và cái này mình đã làm được với cos đánh cao độ nhưng chỉ thủ công pick từng điểm

cũng hỏi thêm bạn 1 tí đối với bước 2. làm sao để lấy cao độ tại tim (cao độ tự nhiên) Không phải nhập vào mà lấy ngay trên trắc ngang

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

sau khi tìm được max min vùng 1 tn, ta lọc text cdtn, lấy giá trị text có góc xoay 90d có và có xmin là cao độ tn trái tương ứng với toạ độ đầu x y của polyline tntn, từ đó ta sẽ tính được cao độ bất kỳ điểm nào trên 1 trắc ngang theo toạ độ điểm đó(lưu ý vì tn nova là tỉ lệ 1000 nên ko xét tới tỉ lệ)

repeat cho nhiều tn của cả tuyến là xong

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

sau khi tìm được max min vùng 1 tn, ta lọc text cdtn, lấy giá trị text có góc xoay 90d có và có xmin là cao độ tn trái tương ứng với toạ độ đầu x y của polyline tntn, từ đó ta sẽ tính được cao độ bất kỳ điểm nào trên 1 trắc ngang theo toạ độ điểm đó(lưu ý vì tn nova là tỉ lệ 1000 nên ko xét tới tỉ lệ)

repeat cho nhiều tn của cả tuyến là xong

Đúng như bạn nói mình đang dùng lisp của bạn nên mới ngộ ra điều đó và đang đi tìm vùng max min của 1 trắc ngang. Tọa độ max thì mình xác định được rồi đó là tọa độ cọc + thêm 1 khoảng cách mấy lần chiều cao chữ là ok, còn tọa độ min thì đang vướng mình biết bạn lấy tọa độ của khung trắc ngang - thêm 1 khoảng. Bạn sử dụng Hàm gì để xác định đường thẳng đi qua điểm đã cho vậy?????

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

hoặc có thể chon theo layer linetructn rồi cộng thêm phạm vi khung ghi chú trác ngang, hình như tác giả nova cũng dựa vô cái này (dùng cách này thì ko cần zoom rồi chọn nhưng có ai đó xoá linetructn đi thì bó tay)

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

còn cái điền cao độ tui sẽ up thêm vô phần hỗ trợ tkd, mở rộng chọn theo đối tượng layer để ghi nên ko nhất thiết là đường đánh cấp

  • Vote tăng 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

Mình đang làm 1 công việc thấy quá thủ công là phải điền cao độ cho từng trắc ngang. Đang muốn tự động 1 tí cho đỡ phải mất công và đang mày mò viết lisp để làm công việc này. thuật toán là zoom đến từng trắc ngang sau đó lấy dữ liệu để xử lý.Quá trình làm thì bị  vướng mắc.(từ 1 điểm đã xác định làm sao tìm đường thẳng đi qua nó) mục đích để là chọn đường thẳng đó

Với lại không biết thuật toán của mình có làm được hay không?

mong mọi người giúp đỡ

đây là file yêu cầu.

http://www.cadviet.com/upfiles/3/66960_trac_ngang_in__updte_new_1.dwg

Chọn đường thẳng qua điểm pt

(ssget "C"  (polar pt -1 1 ) (polar pt 1 1 ) '((0 . "LINE")(8 . "ENTTNTUNHIEN")))

Bạn làm được gì thì post lên để mọi người bổ sung

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

còn cái điền cao độ tui sẽ up thêm vô phần hỗ trợ tkd, mở rộng chọn theo đối tượng layer để ghi nên ko nhất thiết là đường đánh cấp

Đươc như vậy thi hay lắm tui khỏi phải suy nghĩ nữa rồi 

cám ơn bạn

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

Chọn đường thẳng qua điểm pt

(ssget "C"  (polar pt -1 1 ) (polar pt 1 1 ) '((0 . "LINE")(8 . "ENTTNTUNHIEN")))

Bạn làm được gì thì post lên để mọi người bổ sung

Ok để tui làm thử xem

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

Thuật toán của bạn có thế làm được như sau (Dùng VBA)

1.Tạo bộ lọc chứa các Polyline tự nhiên

2.Tạo bộ lọc chứa các Text cao độ tự nhiên (chỉ lấy các text có góc =90 độ)

3.Tạo bộ lọc chứa các Polyline cần ghi cao độ

Để lấy được các text cao độ tự nhiên bên trái của mỗi trắc ngang:

1.Duyệt qua từng PL trong tập chọn và lấy ra tọa độ điểm thứ 2 và điểm cuối của mỗi PL này

2.Duyệt qua tập text cao độ tự nhiên => So sánh để tìm ra text cao độ tự nhiên gần nhất

3.Có được tập hợp các text cao độ mỗi trắc ngang

Để ghi cao độ của PL

1.Duyệt lại qua các tọa độ PL tự nhiên trên => So sánh tọa độ của PL này so với tọa độ điểm 2 và điểm cuối của Polyline tự nhiên

2.Xong.

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

Cám ơn mọi người nhờ những gợi ý mà tôi đã làm được cái vướng mắc Zoom đến từng trắc ngang. Bây giờ việc xử lý số liệu trên đó chắc không khó khắn lắm, đúng lisp quả là rất lợi hại

hahahaahhaha

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

Bạn Huunhantvxdts đã xong lisp điền cao độ cho lớp đánh cấp chưa? post lên a e tham khảo vớ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

Bạn có thể hướng dẫn thêm về copy vào ổ C k? copy vào cad hay để trong ổ c là được?

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


×