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

zizpo_hetxang

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

    51
  • Đã tham gia

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

  • Ngày trúng

    2

Bài đăng được đăng bởi zizpo_hetxang


  1. Nhờ anh chị xem giúp em hai bản vẽ này.

    Em xref bản vẽ quy hoach vào file tn thì nó sai tọa độ làm ngược lại thì nó không sai.

    Em đã đổi bản vẽ quy hoach unit ve m tuy nhiên vẫn mặt đình là mm.

    Nhờ các anh xem giúp

    https://drive.google.com/file/d/1yya34HJ1iC0RmGPfctd9yr9GEhMJ-89H/view?usp=sharing

    https://drive.google.com/file/d/1rMBhQw3H8vYbyOnNzetvGLEvdsnQIwNK/view?usp=sharing

    Thanks.


  2. Trên diễn đàn có 1 lips cũng gần như đề nghị của em tuy nhiên cần các anh chị chỉnh giúp cho phù hợp với công việc.

    File cad đính kèm. http://www.cadviet.com/upfiles/7/1781_toa_do_o_luoi__2.dwg

    Lips này VC của bác ssg từ bài viết này http://www.cadviet.com/forum/topic/2265-bang-toa-do-cac-dinh-thua-dat/page-2

    Xin cảm ơn


  3. Vẫn chưa thật rõ ràng, khó giúp quá: tiêu đề là Pick mà trong yêu cầu là quét.

    Theo mình: san nền những cái Block ATT kia đã có do phần mềm xuất ra, có số liệu + vị trí chuẩn rồi thế thì sao không là:

    B1: gõ lệnh

    B2: Pick chọn danh giới san nền (đường màu xanh)

    B3: Lisp tự lọc các Block ATT nằm trong gianh giới xác định ở trên, Xác định điểm chèn Block cho từng block, đọc-ghi nhớ các giá trị tọa độ XY (có cần đổi lại thứ tự không ???) sau đó lựa chọn: ghi ra file cvs, txt, hay là bảng Table của Cad (???)

    B5: kết thúc lệnh

    Cảm ơn anh đã quan tâm.

    1. Trong cái block đó thì em chỉ cần lấy tên của ô lưới thôi.

    2. Trình tự như anh ghi thì em nghĩ là hợp lý rồi, thay đổi x, y ngược lại với cad

    3. Tọa độ em muốn lấy đối với hình kín thì em cần lấy đủ 4 điểm, còn các hình không kín giao với đường ranh màu xanh thì như bác nói là 3 điểm.

    Xin cảm ơn.


  4. BẠN TÌM LỆNH C2E TRÊN DIỄN ĐÀN ĐI, MÌNH THẤY CÁI NÀY LÂU RỒI MÀ

    Lệnh C2E mà anh nói đến là líp chuyển cad sang excel mà. Mình muốn nhờ viết giúp cái lips tọa độ ô lưới ra bảng. Không pich từng ô lưới (10x10) mà mình quét trọn tất cả thì các vị trí ô vuông sẽ có tọa độ và tên ô lưới. Xin cảm ơn


  5. Trước đây em đang dùng lips này nó vẫn chạy tốt không biết đợt này thế nào nó lại báo lỗi

    Lips này nó điền cao độ đường pline đã có cao độ 

    Error:Automation Error. No database; error: An error has occurred inside the 

    *error* functionbad argument type: fixnump: "BYLAYER"

    . Sẵn đây anh chị xem giúp. Nếu các bác ngại xem thìị viết giùm lips xuất cao độ của đường Pline. Đường này bản thân nó đã có cao độ, bây giờ em muốn nó xuất ra cao độ ngay trên đường pline đó. em gởi kèm bản vẽ và lips trước đây.

    http://www.mediafire.com/download/mmwimfg9beraytl/san+nen1.rar

    http://www.mediafire.com/download/hl8my7xnci0hl04/dcd.lsp


  6. http://www.cadviet.com/upfiles/4/29377_httkd_3112015.zip

     

    Mời mọi người dùng thử và đóng góp ý kiến để hoàn thiện thêm. Nhất là lisp phân lớp.

     

    31-1-2015. Bổ sung lisp cắt trắc dọc và bình đồ dạng tuyến vào khung in

     

    Video hướng dẫn phân lớp đất đắp

    https://www.youtube.com/watch?v=KyNo9N7ZHl4&feature=youtu.bé

     

    Video hướng dẫn lisp cắt trắc dọc vào khung in:

    https://www.youtube.com/watch?v=ZNs-JP_CHfQ

     

    Video hướng dẫn cắt bình đồ vào khung in:

    https://www.youtube.com/watch?v=GBNjNnEygz0&feature=youtu.be

    Bạn cho mình hỏi. Quá trình tính diện tích thì báo lõi như này nhờ bạn chỉ cách khắc phục

    Error:no function definition: NTH-REPLACE; error: An error has occurred inside

    the *error* functionbad argument type: fixnump: "BYLAYER"


  7. em mày mò con nova TDN 5 ngày liền rồi.cài hết bản 3.5-TDN 16 không thể nào khắc phục được lỗi nôva không nhận cao độ đường đồng mức.với nôva TDN16 cài trên CAD 2004 thì nó nhận được đường đầu tiên những đường sau vẽ xong dùng lệnh CDTN kiểm tra lại thấy cao độ là 0.000(em đang số hóa bình đồ mà).còn cài trên cad 2005 thì thậm trí còn không nhận đường đầu tiên.các phiên bản khác cũng vậy.không số hóa được bình đồ thì cũng đồng nghĩa là không thể làm được btl .mong các anh cadviet tìm cho em nguyên nhân?

    bạn có thể tham khảo bài viết này. có quá nhiều cách để nova hiểu cao độ đồng mức

    http://www.centerbuilding.vn/showthread.php?t=763


  8. Nếu khai báo tự động thì nó sẽ ra đoạn móc ở cuối như vậy. Do đó mình muốn có lisp tương tự như trim (hoặc break) mà không phá vỡ cấu trúc dữ liệu của nova. Nhiều khi taluy xuất ra hơi vô duyên, mình phải chỉnh tay nữa, nhưng trim hay break thì sẽ hỏng taluy, mà không trim (break) được thì bất tiện lắm.

    cậu thử để giá trị 100 hoặc -100 xem thử nó có móc không.


  9. http://www.cadviet.c.../32649_nova.dwg

    Nhờ các bác xem qua và giúp em thử xem được không nhé. Ai làm nova chắc cũng đều cần cái này thì phải

    sao cậu không khai báo taluy trong noav

    Trong quá trình thiết kế trắc ngang trong nova, nhiều khi em phải ctk taluy, hoặc taluy chạy ra không giao cắt với đường tự nhiên một cách hợp lý, bây giờ em muốn có lisp nào đó tương tự như lệnh trim của cad, nova vẫn hiểu được mà không làm hỏng dữ liệu trắc ngang. Các bác giúp em nhé!!!

    - nếu cậu khai báo tự động thì trong nova vẫn khai báo được mà

    nếu cậu dùng lệnh tl để vẽ ta luy thì nét cuối cùng cậu bấm enter 2 lần. thì cái nó sẽ tự nối đến với nhau


  10. Bệnh án:

    - Xuất file ảnh vào nova sau đó gõ lệnh để nhập cao độ cho các đường đồng mức đề tô lại các đường trên file ảnh đó.

    -sau khi xóa file ảnh đi kiểm tra lại bằng lệnh ( CDTN-cao độ tự nhiên) thì thấy có một đường đồng mức bị đánh nhầm cao độ.

    vd: cao độ lẽ ra là 450 nhưng gõ nhầm thành 455.

    Bây h không biết làm thế nào để sửa lại được thành 450.Pro nào vào giải quyết dùm cái.Sợ cái này nó ảnh hưởng đến các phần làm sau:(.

    Thanks ae trước!

    bạn không thử dndm xem thử được không. mách nhỏ bạn. bạn có thể dùng lệnh này hay hơn lệnh dndm là lệnh HECP

    chúc vui nhé


  11. em nhận số liệu mặt cắt ngang từ khảo sát tuyến đường cũ, số liệu ấy là các cao độ mặt cắt ngang của các cọc được ghi bằng tay.

    em dùng lệnh NT nhập vào nova4.0, sau khi chạy tuyến cũ, thì xuất trắc ngang thì trắc ngang không trùng với số liệu khảo sát.

    các tiền bối có cách gì giúp e với!

    thế thì bạn phải xem người nhập thê nào. bạn dùng lệnh rtdn nhập lại thử xem. nhớ lưu lại nha bạn. nếu không được thì gởi fiel lên mọi người giúp cho


  12. chào mọi người. em đang dùng Nova 05 chạy trên cad 04. khi khai báo đến bước cong nằm (CN)thì trên màn hình xuất hiện dòng chữ cảnh báo như sau: Please enter no more than 30 characters. mọi người ai biết lỗi này nguyên nhân do đâu chỉ giúp mình nhé. mình cảm ơn.

    theo như các đàn anh đi truớc thì bạn nên dùng cad2005 là ok ngay

    chúc bạn làm tốt


  13. Hề hề hề,

    Bạn hãy bổ sung đoạn code sau :

    (setq an1 (getstring "Ban da hai long??? <Y or N>: "))

    (while (= (strcase an1) "N")

    (command "undo" "1")

    (setq gq (getreal "/n Nhap goc quay moi: "))

    (if (= (strcase ans) "A")

    (command "rotate" ssq (entlast) "" p0 gq)

    (command "rotate" ssq (entlast) "" pn gq)

    )

    (setq an1 (getstring "\n Ban da hoan toan hai long <Y or N>: "))

    )

    vào ngay trên dòng code:

    (command "erase" en1 en3 "")

     

    Hy vọng đúng ý bạn.

     

    tuyệt cú mèo rồi bác. cảm ơn


  14. Hề hề hề,

    Trước hết cám ơn bạn đã dùng lisp do mình viết.

    Thứ nữa là việc còn lại một số đối tượng không xoay như bản vẽ bạn post là do các polyline của bạn khá phức tạp. Nó có thể có nhiều giao điểm với đường cắt chứ không phải chỉ có một giao điểm. Do vậy mình đã không xét tới trường hợp này. Để mình xét thêm rồi nếu được sẽ bổ sung sau.

    Bạn cần lưu ý thêm với vái lisp của mình là khi lisp yêu cầu bạn Chon điểm tiếp theo thì bạn cứ việc chọn liên tục sao cho cái polyline mà bạn thấy nó tạo ra bao kín hoặc cắt qua các đối tượng bạn cần xoay. Khi bạn không chọn nữa nó sẽ tự động khép kín lại. Tất cả các đối tượng nằm trong hoặc trên polyline này sẽ được chọn với điều kiện toàn bộ vùng chọn đều thấy được trên màn hình.

    Một lần nữa cám ơn phản hồi của bạn.

     

    Đây là lisp mình đã bổ sung để đảm bảo cắt sạch các polyline. Bạn dùng thử xem sao nhé. Mình đả thử với bản vẽ 111_2 bạn gửi thì thấy ngon lành. Các trường hợp khác mong bạn test thêm.

    
    (defun c:xbd (/ p0 pn en en0 en1 ssl ssp en2 en3 pc p p1 p2 pk plst  pls ssq gq ans)
    (vl-load-com)
    (command "undo" "be")
    (setq p0 (getpoint "\n Chon diem dau duong cat ")
           pn (getpoint p0 "\n Chon diem cuoi duong cat "))
    (command "line" p0 pn "")
    (setq en0 (entlast)
            ssl (ssget "X" (list (cons 0 "*LINE"))))
    (ve0 ssl)
    (setq ssp (acet-ss-to-list (ssget "F" (list p0 pn) (list (cons 0 "*LINE")))))
    (foreach en2 ssp
            (setq pls (acet-geom-intersectwith en0 en2 0))
            (setq en en2)
            (if pls
                (foreach pc pls
                     (command "break" en  pc "@")
                     (setq en (entlast))
                )
            )
    )
    (setq p (getpoint p0 "\n Chon phia can xoay"))
    (command "offset" "1" en0 p "")
    (setq en1 (entlast)
           p1 (cdr (assoc 10 (entget en1)))
           pk (cdr (assoc 11 (entget en1)))
    )
    (setq plst (list))
    (setq plst (append (list p1) plst))
    (command "pline" 
       (while p1        
           (setq p2 (getpoint p1 "\n Chon diem tiep theo"))
           (if  p2
                (progn
                       (setq plst (append (list p2) plst))
                       (command p1 p2)
                       (setq  p1 p2)
                )
                (progn
                      (setq plst (append (list pk) plst))
                      (command p1 pk )
                      (setq p1 nil)
                )
           )
       )
    )
    (setq en3 (entlast))
    (setq ssq (ssget "CP" plst))
    (setq ans (getstring "\n Chon tam quay < A or B >: "))
    (setq gq (getreal "\n Nhap goc quay theo do: "))
    (command "copy" en0 "" p0 p0)
    (if (= (strcase ans) "A")
       (command "rotate" ssq (entlast) "" p0 gq)
       (command "rotate" ssq (entlast) "" pn gq)
    )
    (command "erase" en1 en3 "")
    (command "undo" "e")
    )
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defun ve0 (ss)
     (defun suadinhPl(thongtin / index doituong doituongmoi toado)
       (setq
         doituong (assoc '38 thongtin)      
         doituongmoi (cons 38 0.)
       )
       (subst doituongmoi doituong thongtin)
     )
     (defun suadinh (thongtin / index doituong doituongmoi toado)
       (setq thongtinmoi nil)
       (foreach doituong thongtin
         (if (and (>= (car doituong) 10)
           (<= (car doituong) 36) 
      )
    (setq doituongmoi
           (list (car doituong)
    	     (cadr doituong)
    	     (caddr doituong)
    	     0.0
           )
    )
    (setq doituongmoi doituong)
         )
         (setq thongtinmoi (append thongtinmoi (list doituongmoi)))
       )
       (setq thongtinmoi thongtinmoi)
     )
     (defun tendoituong (ssdt /)
       (cdr (assoc '0 (entget ssdt)))
     )
     ;;---------------------------------------------
     (setq	tapdoituong ss
                     ;;;;; (ssget)
    sodt	    (sslength tapdoituong)
    index	    0
    ta	    (chr 8)
    stxoa	    (strcat ta ta ta ta ta ta ta ta ta ta ta ta ta ta ta ta ta ta ta ta)
    stxuly	    "Xu ly duoc: "
    ptcu	    nil
     )
     (repeat sodt
       (setq
         ssdt  (ssname tapdoituong index)
         pt    (* (/ (* index 1.0) sodt) 100.0)
         index (1+ index)
       )
       (if	(/= pt ptcu)
         (progn
    (princ (strcat stxoa stxuly (rtos pt 2 0) "%"))
    (setq ptcu pt)
         )
       )    
       (if	(or (= (tendoituong ssdt) "SPLINE")
        (= (tendoituong ssdt) "LINE")	    
        (= (tendoituong ssdt) "CIRCLE")
        (= (tendoituong ssdt) "ARC")
        (= (tendoituong ssdt) "POLYLINE")
        (= (tendoituong ssdt) "ELLIPSE")
        (= (tendoituong ssdt) "TEXT")
        (= (tendoituong ssdt) "DIMENSION")
               (= (tendoituong ssdt) "ATTDEF")
        (= (tendoituong ssdt) "SOLID")
        (= (tendoituong ssdt) "INSERT")
        (= (tendoituong ssdt) "ATTRIB")
        (= (tendoituong ssdt) "HATCH")
    )
         (progn
    (setq thongtin (entget ssdt)
          thongtin (suadinh thongtin)
    )
    (entmod thongtin)
         )
       )
       (if (= (tendoituong ssdt) "LWPOLYLINE")
         (progn
           (setq thongtin (entget ssdt)
          thongtin (suadinhPL thongtin)	      
    )
    (entmod thongtin)
         )
       )
       (princ)
     )
    )
    

     

    Hy vọng bạn vừa ý. Chú ý khi chọn điểm tạo polyline sao cho phù hợp với ý bạn nhé.

     

    làm phiền bác giúp em chỗ này tý.

    - khi chương trình yêu cầu nhập góc

    + người dùng nhập góc- nhập góc xong

    ơ chổ này em muốn nhờ bác thêm giùm cho một đoạn nữa là ban đã ưng ý chúa

    nếu chưa thì tiếp tục nhập vào góc mới chương trình xoay lại. giống như lệnh undo cad nhưng mà không undo lại toần bộ mà chỉ phần góc để xoay thôi. cảm ơn bác rất là nhiều


  15. Hề hề hề,

    Trước hết cám ơn bạn đã dùng lisp do mình viết.

    Thứ nữa là việc còn lại một số đối tượng không xoay như bản vẽ bạn post là do các polyline của bạn khá phức tạp. Nó có thể có nhiều giao điểm với đường cắt chứ không phải chỉ có một giao điểm. Do vậy mình đã không xét tới trường hợp này. Để mình xét thêm rồi nếu được sẽ bổ sung sau.

    Bạn cần lưu ý thêm với vái lisp của mình là khi lisp yêu cầu bạn Chon điểm tiếp theo thì bạn cứ việc chọn liên tục sao cho cái polyline mà bạn thấy nó tạo ra bao kín hoặc cắt qua các đối tượng bạn cần xoay. Khi bạn không chọn nữa nó sẽ tự động khép kín lại. Tất cả các đối tượng nằm trong hoặc trên polyline này sẽ được chọn với điều kiện toàn bộ vùng chọn đều thấy được trên màn hình.

    Một lần nữa cám ơn phản hồi của bạn.

     

    Đây là lisp mình đã bổ sung để đảm bảo cắt sạch các polyline. Bạn dùng thử xem sao nhé. Mình đả thử với bản vẽ 111_2 bạn gửi thì thấy ngon lành. Các trường hợp khác mong bạn test thêm.

    
    (defun c:xbd (/ p0 pn en en0 en1 ssl ssp en2 en3 pc p p1 p2 pk plst  pls ssq gq ans)
    (vl-load-com)
    (command "undo" "be")
    (setq p0 (getpoint "\n Chon diem dau duong cat ")
           pn (getpoint p0 "\n Chon diem cuoi duong cat "))
    (command "line" p0 pn "")
    (setq en0 (entlast)
            ssl (ssget "X" (list (cons 0 "*LINE"))))
    (ve0 ssl)
    (setq ssp (acet-ss-to-list (ssget "F" (list p0 pn) (list (cons 0 "*LINE")))))
    (foreach en2 ssp
            (setq pls (acet-geom-intersectwith en0 en2 0))
            (setq en en2)
            (if pls
                (foreach pc pls
                     (command "break" en  pc "@")
                     (setq en (entlast))
                )
            )
    )
    (setq p (getpoint p0 "\n Chon phia can xoay"))
    (command "offset" "1" en0 p "")
    (setq en1 (entlast)
           p1 (cdr (assoc 10 (entget en1)))
           pk (cdr (assoc 11 (entget en1)))
    )
    (setq plst (list))
    (setq plst (append (list p1) plst))
    (command "pline" 
       (while p1        
           (setq p2 (getpoint p1 "\n Chon diem tiep theo"))
           (if  p2
                (progn
                       (setq plst (append (list p2) plst))
                       (command p1 p2)
                       (setq  p1 p2)
                )
                (progn
                      (setq plst (append (list pk) plst))
                      (command p1 pk )
                      (setq p1 nil)
                )
           )
       )
    )
    (setq en3 (entlast))
    (setq ssq (ssget "CP" plst))
    (setq ans (getstring "\n Chon tam quay < A or B >: "))
    (setq gq (getreal "\n Nhap goc quay theo do: "))
    (command "copy" en0 "" p0 p0)
    (if (= (strcase ans) "A")
       (command "rotate" ssq (entlast) "" p0 gq)
       (command "rotate" ssq (entlast) "" pn gq)
    )
    (command "erase" en1 en3 "")
    (command "undo" "e")
    )
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defun ve0 (ss)
     (defun suadinhPl(thongtin / index doituong doituongmoi toado)
       (setq
         doituong (assoc '38 thongtin)      
         doituongmoi (cons 38 0.)
       )
       (subst doituongmoi doituong thongtin)
     )
     (defun suadinh (thongtin / index doituong doituongmoi toado)
       (setq thongtinmoi nil)
       (foreach doituong thongtin
         (if (and (>= (car doituong) 10)
           (<= (car doituong) 36) 
      )
    (setq doituongmoi
           (list (car doituong)
    	     (cadr doituong)
    	     (caddr doituong)
    	     0.0
           )
    )
    (setq doituongmoi doituong)
         )
         (setq thongtinmoi (append thongtinmoi (list doituongmoi)))
       )
       (setq thongtinmoi thongtinmoi)
     )
     (defun tendoituong (ssdt /)
       (cdr (assoc '0 (entget ssdt)))
     )
     ;;---------------------------------------------
     (setq	tapdoituong ss
                     ;;;;; (ssget)
    sodt	    (sslength tapdoituong)
    index	    0
    ta	    (chr 8)
    stxoa	    (strcat ta ta ta ta ta ta ta ta ta ta ta ta ta ta ta ta ta ta ta ta)
    stxuly	    "Xu ly duoc: "
    ptcu	    nil
     )
     (repeat sodt
       (setq
         ssdt  (ssname tapdoituong index)
         pt    (* (/ (* index 1.0) sodt) 100.0)
         index (1+ index)
       )
       (if	(/= pt ptcu)
         (progn
    (princ (strcat stxoa stxuly (rtos pt 2 0) "%"))
    (setq ptcu pt)
         )
       )    
       (if	(or (= (tendoituong ssdt) "SPLINE")
        (= (tendoituong ssdt) "LINE")	    
        (= (tendoituong ssdt) "CIRCLE")
        (= (tendoituong ssdt) "ARC")
        (= (tendoituong ssdt) "POLYLINE")
        (= (tendoituong ssdt) "ELLIPSE")
        (= (tendoituong ssdt) "TEXT")
        (= (tendoituong ssdt) "DIMENSION")
               (= (tendoituong ssdt) "ATTDEF")
        (= (tendoituong ssdt) "SOLID")
        (= (tendoituong ssdt) "INSERT")
        (= (tendoituong ssdt) "ATTRIB")
        (= (tendoituong ssdt) "HATCH")
    )
         (progn
    (setq thongtin (entget ssdt)
          thongtin (suadinh thongtin)
    )
    (entmod thongtin)
         )
       )
       (if (= (tendoituong ssdt) "LWPOLYLINE")
         (progn
           (setq thongtin (entget ssdt)
          thongtin (suadinhPL thongtin)	      
    )
    (entmod thongtin)
         )
       )
       (princ)
     )
    )
    

     

    Hy vọng bạn vừa ý. Chú ý khi chọn điểm tạo polyline sao cho phù hợp với ý bạn nhé.

    bác phamthanhbinh ơi. lần này thì quá tuyệt rồi bác ơi. em không còn ý kiến gì nữa.Chỉ có thể nói là chân thành cảm ơn bác. Xin chúc bác sức khoẻ và mọi người trên diễn đàn như ý

×