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

711a041092

Thành viên
  • Số lượng nội dung

    11
  • Đã tham gia

  • Lần ghé thăm cuối

Bài đăng được đăng bởi 711a041092


  1. Nho viet lisp chenh cao.dwgimage.thumb.png.f710492fa02e27f6fe47e4a9069bd9c0.png

    Vào lúc 10/11/2023 tại 08:34, 711a041092 đã nói:

     

    image.png.b168959b70dc572698160737b8cbcb35.png

     

    Em có 1 dãy thông số chênh cao (Hiệu số của cao độ thiết kế và cao độ tự nhiên).

    Các bác giúp em viết lisp chọn các text chênh cao, chọn đường polyline màu đỏ (đường thiết kế) người dùng nhập thêm thông số a, b. Sau khi dùng lisp, text chênh cao sẽ di chuyển:

    - Với chênh cao dương thì giá trị này sẽ nằm trên đường thế kế 1 khoảng a

    - Với chênh cao âm thì giá trị này sẽ nằm trên đường thế kế 1 khoảng b. Có 2 tùy chọn, Tùy chọn 1 là giá trị chênh cao âm này vẫn giữ nguyên giá trị, Tùy chọn 2 là giá trị chênh cao âm này sẽ lấy giá trị trị tuyệt đối và nằm dưới đường thiết kế 1 khoảng b như hình vẽ.

    Cảm ơn các bác nhiều

    • Vote giảm 2

  2. 17 giờ trước, ndtnv đã nói:

    Vì không có bản vẽ nên bạn tự đặt thuộc tính các đoạn thẳng cần vẽ

    
    (defun C:TOP ( / l p q)
        (foreach e (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "LINE"))))))
            (setq p (cdr (assoc 10 (entget e))) q (cdr (assoc 11 (entget e))))
            (setq l (cons (if (> (cadr p) (cadr q)) p q) l))
        )
        (setq l (vl-sort l ''((u v) (< (car u) (car v)))))
        (mapcar ''((u v) (entmakex (list '(0 . "LINE") (cons 10 u) (cons 11 v)))) l (cdr l))
    )
    
    

    Lisp chạy tốt rồi. Cảm ơn bác


  3. 8 giờ trước, tannguyen291 đã nói:

    Thực ra lisp này không hữu ích lắm. Chỉ dành cho việc chamfer nhà liền kề với đường giao thông nội bộ. các ô đất công cộng, cơ quan... đất khác áp dụng sẽ bị sai. Chưa kể các trục đường đô thị, đường khu vực khi áp dụng sẽ bị trả hồ sơ về kk. tốt nhất nên chamfer theo bán kính bó vỉa như thế này dễ nhất không ảnh hưởng đến luật nào.

    image.png.67532135d68158a0c5daef364e78810a.png

    Em chuyên bên thiết kế đường bộ bác à. Thỉnh thoảng công ty nhận thêm quy hoạch khu dân cư nho nhỏ để làm thêm lúc đói kém thôi.

    Cách vát vỉa hè thì tùy quan điểm của thẩm định mà có khi họ yêu cầu vát theo 2 cách:

    + Cách 1 là theo tiêu chuẩn nhà liền kề như bài đăng ở trên

    + Cách 2 bên em thường lấy vẽ đường xline (màu hồng) vuông góc với đường mép đường (màu xanh), đường xline này sẽ cắt đường mép vỉa hè (màu vàng). Từ đó vẽ đường thẳng nối 2 điểm cắt từ đừng xline và mép vỉa hè (như hình ảnh dưới)

    Nếu được thì bác viết giúp em lisp vẽ cho cách 2 thì hay quá. kaka

    image.thumb.png.195e8114d9a3f4c2c6b2bb98814a71fb.png


  4. 22 phút trước, tannguyen291 đã nói:

    Dùng thử lisp mình viết xem sao. Ngoài ra mình có rất nhiều công cụ dành cho quy hoạch đó. Mời bạn tham khảo nhé.

    ở đây nè. https://www.cadviet.com/forum/index.php?app=forums&module=forums&controller=topic&id=195662

    
    (defun c:CDR (/ ent1 ent2 lst1 lst2 pt1 pt2 fle dis ange)
      (setq ent1 (entsel "Select 1th"))
      (redraw (car ent1) 3)
      (setq 
        ent2 (entsel "Select 2th")
        pt1 (list (caadr ent1) (cadadr ent1))
        pt2 (list (caadr ent2) (cadadr ent2))
        fle (getvar "filletrad")
      )
      (setvar "filletrad" 0) 
      (command-s "FILLET" pt1 pt2)
      (setq 
        ent1 (vlax-ename->vla-object (car ent1))
        lst1 (list (vlax-curve-getstartpoint ent1) (vlax-curve-getendpoint ent1))
        ent2 (vlax-ename->vla-object (car ent2))
        lst2 (list (vlax-curve-getstartpoint ent2) (vlax-curve-getendpoint ent2))
      )
      (if (vl-some
            '(lambda (x) 
              (vl-some 
                '(lambda (y) 
                  (if (equal x y 1e-6)
                    (setq 
                      lst1 (cons x (vl-remove x lst1))
                      lst2 (cons y (vl-remove y lst2))
                    )
                  )
                )
                lst2
              )
             )
            lst1
          )
        (progn
          (setq ange (rem (* 180 (/ (abs (- (apply 'angle lst1) (apply 'angle lst2))) pi)) 180))
          (cond
            ((< ange 45) (setq dis 8))
            ((< ange 80) (setq dis 5))
            ((< ange 100) (setq dis 4))
            ((< ange 135) (setq dis 3))
            (t (setq dis 2))
          )
          (if (equal (car lst1) (vlax-curve-getstartpoint ent1) 1e-6)
            (vla-put-StartPoint ent1 (vlax-3D-point (setq pt1 (polar (car lst1) (apply 'angle lst1) dis))))
            (vla-put-EndPoint ent1 (vlax-3D-point (setq pt1 (polar (car lst1) (apply 'angle lst1) dis))))
          )
          (if (equal (car lst2) (vlax-curve-getstartpoint ent2) 1e-6)
            (vla-put-StartPoint ent2 (vlax-3D-point (setq pt2 (polar (car lst2) (apply 'angle lst2) dis))))
            (vla-put-EndPoint ent2 (vlax-3D-point (setq pt2 (polar (car lst2) (apply 'angle lst2) dis))))
          )
          (entmake (list '(0 . "LINE") (cons 10 pt1) (cons 11 pt2)))
        )
      )
      (setvar "filletrad" fle)
      (princ)
    )

     

    Lisp hay quá. Cảm ơn bác nhiều.


  5. 29 phút trước, tannguyen291 đã nói:

    Bác vừa cho em 1 ý tưởng cực kỳ táo bạo. Lợi dụng lệnh fillet 0 để cắt gọt trước khi tính toán chamfer arc. Quả nhiên hiệu quả. Không cần mất 16 trường hợp kia nữa, chỉ còn có 4 trường hợp. Hahaha

    Lệnh của bạn nếu chỉ là đường thằng chamfer thì khá đơn giản. Nếu đường thẳng và đường cong thì chắc sẽ cần trà sữa. :))

    Đường thẳng thôi bác.


  6. 3 giờ trước, tannguyen291 đã nói:

    Bạn làm quy hoạch ở đâu mà lạ vậy. Tiêu chuẩn 9411 này mình biết. Vì đây là tiêu chuẩn không phải Quy chuẩn nên hầu hết các địa phương đều bỏ qua và yêu cầu chamfer đồng nhất để tiện quản lý. Ví dụ fillet 8 thì chamfer 4. 12 - 6, 15- 8. Tuy nhiên nếu cần chính xác thì cần áp dụng công thức đặc biệt của phần thiết kế giao thông với  công thức S2=(V2+20)^2/100). Ngoài ra các nhà đầu tư cũng không thích làm góc vát lung tung để tránh gây ra nhiều mẫu công trình khác nhau.

    image.png.22921bc2026bd48cbd467c38834a31c0.png

    Bạn yêu cầu 1 lisp như trên khá phức tạp và có khi mấy hôm nữa có khi lại bỏ không dùng tới.

    Em thấy tiêu chuẩn thiết kế đường thì công thức tầm nhìn không thấy xét đến yếu tố góc giao. (S=(V2+20)^2/100))
    Hai lisp trên có nội dung khác nhau nên em không gộp trong một chủ đề, đang có nhu cầu gấp nên em đăng lên luôn.


  7. Em hiện đang vẽ bản vẽ quy hoạch. Trong đó, có việc phải bo góc lô đất.

    Yêu cầu cần là đo góc giữa 2 đường thẳng a và b.

    Nếu góc này nhỏ hơn 45 độ thì chiều dài bo là 8m

            góc này từ 45 độ đến nhỏ hơn 90 độ thì chiều dài bo là 5m

            góc này bằng 90 độ thì chiều dài bo là 4m

            góc này lớn hơn 90 độ đến nhỏ hơn hoặc bằng 135 độ thì chiều dài bo là 3m

           góc này lớn hơn 135 độ thì chiều dài bo là 2m

    Công việc này lặp lại và mất thời gian đo rồi so sánh góc. Vậy nên mong các bác có thể viết cho em 1 cái lisp để giải quyết công việc trên.

    Cảm ơn các bác

    Chúc các bác  tuần mới vui vẻ!

     

     

    image.png.86fa2175bb423578a7ba93d038e87a3d.pngimage.png.c76b9dab7c0fb96fbf0ca6f58f1c57cc.png

×