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

Các cao thủ land desktop giúp em với

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

Trong lannd 2004 khi chuyển từ pl sang 3dpl em phải vào terrain/ 3dpl/ create by slope, rồi tạo độ đốc cho đường pl mình chọn, nhung khi gặp đoạn cong ta phải nhập từng đoạn nhỏ rất thủ công và mất thời gian. Các bác có cách gì giải quyết vấn đề trên giúp em với. có thể dùng lisp chẳng hạn(em ko biet về lisp)

Thanks các bác nhiều

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ấn đề em muốn được các bác chỉ giúp là làm cách nào để tạo nhanh một đường 3dpl từ 1 đường pl mà ko phải nhập khỏng cách từng đoạn nhỏ (Thay vì nhập nhiều lần ta chỉ cần nhập 1 lần là được).

 

Cách em thường làm là vào terrain/ 3dpl/ create by slope

 

 

From point (or Entity): e

Entity (or Points):

Additional curve vertices by [Number/Mid/Distance] <Distance>:

 

Distance <1.25>: .5

 

Additional curve vertices by [Number/Mid/Distance] <Distance>:

 

Distance <0.26>: .5

 

Additional curve vertices by [Number/Mid/Distance] <Distance>:

 

Distance <2.06>: .5...............

 

 

Starting elevation (or Dtm) <0.00>:500

 

Slope (or Grade) <-1000.00:1>: -1000

 

Slope: -1000.00:1, Grade: -0.10

 

 

Sau đó ta sẽ có được kết quả là 1 đường 3dpl nhung cách này rất thủ công :s_big: , và nếu gặp 1 dưdờng pl dài và nhiều đoạn cong thì nhập rất lâu và dễ nhầm. Bác nào có cách làm khác hay hơn chỉ giúp em với.

Thanks các bác nhiều.....

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 muốn vẽ lại 1 đường 3DPolyline trên nền 1 đường Pline với thông số như sau:

- Khoảng cách các cung đoạn là : 0.5

- Cao độ bắt đầu là 500.

- Các cung đoạn giảm chiều cao 1000 ( hoặc chiều cao điểm cuối là 1000)

Nếu đúng như vậy thì có thể làm đượ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

Đây là đoạn code viết cho bạn

 

(defun c:2->3dpl ( / ent chieudai dist dodoc p1 p2 i elev dlist)
 (setq ent (car (entsel "\nChon pline:")))
 (setq ent (vlax-ename->vla-object ent))
 (setq chieudai (vlax-get-property ent 'Length))
 (setq dist (getdist "\nKhoang cach can chia<500>:"))
(if (null dist)(setq dist 500))
 (setq dodoc (getreal "\nDo doc<0.001>:"))
(if (null dodoc)(setq dodoc 0.001))
 (setq elev (getreal "\nCos day<200>:"))
(if (null elev)(setq elev 200))
 (setq i 0)
 (setq dlist (list))
 (while (< (* i dist) chieudai)
 (progn
 (setq p1 (vlax-curve-getPointAtDist ent (* i dist)))
(setq p1 (list (car p1) (cadr p1) (+ elev (* i dist dodoc))))
(setq dlist (append dlist (list p1))
  ))
(setq i (1+ i))
)
  (setq p2 (vlax-curve-getEndPoint ent))
 (setq p2 (list (car p2) (cadr p2) (+ (caddr p1) (* dodoc (distance p1 p2)))))
 (setq dlist (append dlist (list p2)))
 (command "_3dpoly")
   (foreach n dlist (command n)) (command ""))

)

 

Trong khi dùng bạn nên tắt chế độ bắt điểm vì đoạn code trên mới chỉ viết thử xem có đúng ý của bạn không nên chưa tẩy rửa sạch sẽ.

  • 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

Thank bác nhiều. nhưng quả thực là em ko biết gì về lisp cả. bác có thể tạo thành 1 file *.lsp với đoạn code trên cho em có được ko. hiiiiii thông cảm mới bắt đầu tìm hiểu về lisp mà.

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
Thank bác nhiều. nhưng quả thực là em ko biết gì về lisp cả. bác có thể tạo thành 1 file *.lsp với đoạn code trên cho em có được ko. hiiiiii thông cảm mới bắt đầu tìm hiểu về lisp mà.

bạn xem cách tạo ở đây:

http://www.cadviet.com/forum/index.php?showtopic=1787

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 bác Hoành nhiều, Bài viết thật bổ ích cho những người mới vào nghề như tụi em. Mà hình như đoạn code trên bị lỗi hay sao ấy, em APPLOAD mãi mà không được nó cứ báo lỗi hoài à. Các Bác xem giúp em với nhé.

 

Command: APPLOAD 3dpl.lsp successfully loaded.

Command: ; error: extra right paren on input

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 bác Hoành nhiều, Bài viết thật bổ ích cho những người mới vào nghề như tụi em. Mà hình như đoạn code trên bị lỗi hay sao ấy, em APPLOAD mãi mà không được nó cứ báo lỗi hoài à. Các Bác xem giúp em với nhé.

 

Command: APPLOAD 3dpl.lsp successfully loaded.

Command: ; error: extra right paren on input

bạn copy thiếu dấu ngoặc.

 

Bạn hãy copy lại.

  • 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

Hình như đoạn lisp trên thừa 1 dấu ngoặc thì phải. em bỏ bớt thì dã appload được.

 

(foreach n dlist (command n)) (command "")

 

Em đã sử dụng thử thì thấy nó vẫn ko ổn lắm.

 

Cái em cần là:

 

Từ 1 đường pl có sẵn, từ đó tìm cách gán cao độ, độ dốc cho pl này (độ dốc có thể là - hpặc +). đường pl này có thể hay gặp trong đường tuyến kênh ấy.

 

Không hiểu các bác có hiểu ý em không. Nhưng dù sao cũng cám ơn các bác rất rất nhìêu... :s_big:

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

đúng là thừa 1 dấu ngoặc thật.

Nếu bạn sử dụng dốc lên thì chọn i>0, dốc xuống thì i<0.

Nếu muốn xoá đường pline cũ đi thì bổ sung đoạn code (entdel ent) vào trước dấu ngoặc đơn sau cùng, vậy là đường 3DPline mới coi như là được update từ đưòng Pline cũ.

 

Nếu vấn đề như bạn nói thì phải xử lý theo hướng khác.

Phương án 1:

- Select bằng cách Chọn 1 điểm trên Pline.

- Lọc lấy toạ độ tất cả các đỉnh của con Pline cũ ( làm được).

- Xoá con Pline cũ đi ( làm được)

- Nếu điểm chọn gần đầu mút nào sẽ lấy mút đó làm điểm đầu tiên. ( làm được)

- Gán cao độ Z cho điểm đầu tiên.( làm được)

- Gán chênh cao - tức dộ dốc cho các điểm tiếp theo, tuỳ khoảng cách các đỉnh mà sẽ có chênh cao thich hợp.( làm được)

- Vẽ đường 3DPolyline trên các toạ độ cũ với các cung đoạn thẳng ( làm được)

 

Tuy nhiên nếu đường polyline của bạn có các cung tròn thì kết quả sẽ không đuợc như mong muốn vì lệnh 3dpoly chỉ cho phép vẽ đoạn thẳng, không cho phép vẽ cung tròn. Nếu tuyến kênh của bạn chỉ là một cung tròn thì kết quả càng tai hại. Vì vậy cần bổ sung thêm điểm trên cung tròn để giả lập cung tròn đó, vấn đề là cần bao nhiêu điểm cho 1 cung tròn thì vừa. Câu hỏi này mình không giải quyết được bởi cung lớn thì cần nhiều điểm, cung nhỏ cần ít điểm, mà cung như thế nào để gọi là lớn thì mình không nắm được. Nếu bạn chỉ cần gặp cung tròn là cứ lấy khoảng cách ví dụ 500 đơn vị cho 1 điểm thì khả thi hơn. Tuy nhiên làm được cũng phải có thời gian đầu tư.

 

Nếu bạn đồng ý mình sẽ giúp bạn phương án 2:

- Bạn đồ lại pline cũ bằng pline chỉ gồm các đoạn thẳng để có thể mô phỏng các cung tròn .

- Bước tiếp theo sử dụng phương án 1 cho con pline mới tạo ra này.

OK?

  • 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

Vấn đề là ở chổ mấy đoạn conng đó cuongqtk2 à, trong mấy cái tuyến kênh thủy điện thì có cái nào thẳng đâu, toàn cung tròn trong không à. buồn thật thế là không giải quyết được vấn đề rồi, đành phải làm theo phương pháp cũ vậy. Thanks bác nhiều. :s_big:

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ác bác cho em hỏi trong Land có thể tính chênh cao giữa 2 surface (bề mặt) không?

Em có một bề mặt là Cao độ tự nhiên (CĐTN), 1 bề mặt là Cao độ thiết kế (CĐTK). Bây giờ em chạy cần xác định Cao độ thiết kế tại một số điểm, Cao độ tự nhiên tại cùng các điểm đó và chênh cao = CĐTK - CĐTN. Có cách nào để Land tự động tính chênh cao 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

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


×