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

thanhduan2407

Nhà quảng cáo
  • Số lượng nội dung

    1.161
  • Đã tham gia

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

  • Ngày trúng

    26

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


  1. Trong Lisp trên có sử dụng hàm Split (defun Split (Str Char / Lst pos) ... để tách xâu phân biệt được các thông số.

    Lisp trên viết cho file có cấu trúc phân biệt giữa các thông số là dấu tab "t"

     

    Bạn có thể tìm dấu tab và thay thế bằng dấu cách, dấu phẩy tại các dòng :

    (if (vl-string-search "\t" Line)

    ....

    (setq data (split Line "\t" )

    Cảm ơn bác Bách rất nhiều.


  2. Lệnh MH (Merge Hatch) dưới đây sẽ thực hiện điều bạn muốn.

    Chương trình yêu cầu người sử select các hatch, sau đó nối chúng lại với nhau thành 1 hatch đơn nhất.

     

    Thuộc tính (layer, màu, kiểu hatch, ...) của hatch kết quả được lấy theo đối tượng hactch đầu tiên. Mẹo: Khi các hatch không giống nhau, muốn đối tượng sau khi merge giống hatch nào thì nên pick hatch đó đầu tiên, sau đó mới select các hatch khác.

     

    (defun c:mh (/ ss entht sl i dt dtht)
     (princ "\nMerge Hatch - free lisp from CADViet.com")
     (setq
       ss (ssget '((0 . "HATCH")))
       sl (if ss
     (sslength ss)
     0
          )
       i  0
       l  0
     )
     (repeat sl
       (setq
         entht (ssname ss i)
         dtht  (getbdata entht)
         dt    (append dt dtht)
         l	    (+ l (cdr (assoc 91 (entget entht))))
         i	    (1+ i)
       )
     )
     (setq	ent  (ssname ss 0)
    ss   (ssdel ent ss)
    tt   (entget ent)
    duoi (member (assoc 75 tt) tt)
    dau  (reverse (member (assoc 91 tt) (reverse tt)))
    tt   (append dau dt duoi)
    tt   (subst (cons 91 l) (assoc 91 tt) tt)
     )
     (entmod tt)
     (command ".erase" ss "")
     (princ)
    )
    (defun getbdata	(ent)
     (setq	tt (entget ent)
    tt (cdr (member (assoc 75 tt) (reverse tt)))
    tt (cdr (member (assoc 91 tt) (reverse tt)))
     )
    )
    (princ "\nMerge Hatch is loaded, please type MH to start!")
    (princ)
    

    Cám ơn bác hoành rất nhiều

    Em đã đọc rất nhiều bài post của bác trên mạng và rất phục bác

    Em cũng đang giai đoạn tìm hiểu về lisp và ứng dụng cho chuyên ngành của mình

    Em là dân Trắc Địa bác ạ nên cần phải năng động cho lĩnh vực xử lý tính toán số liệu của mình

    Em rất mong bác giúp đỡ em một số bài toán mà em đang vướng mắc

    Bác có thể nêu cấu trúc đọc từng dòng của 1 file dữ liệu với một vài kiểu khuôn dạng trong từng dòng

    VD đọc dữ liệu với 3 dòng được lặp đi lặp lại:

    dòng 1: kiểu a

    dòng 2 Kiể b

    dòng 3 Kiểu c

    dòng 4: kiểu a

    dòng 5 Kiể b

    dòng 6 Kiểu c

    .....

     

    Tiện thể bác có thế giúp em lập trình một hàm tách xâu ký tự trên một dòng mà các số liệu được phân biệt bởi dấu cách,hoặc dấu tab, hoặc dấu phẩy

    VD dấu tab

    1 1035846.246 597526.601 -1.23

    2 1035853.471 597526.324 -2.09

    3 1035862.06 597523.732 -2.93

    VD dấu cách

    1 1035846.246 597526.601 -1.23

    2 1035853.471 597526.324 -2.09

    3 1035862.06 597523.732 -2.93

    VD dấu phẩy

    1,1035846.246,597526.601,-1.23

    2,1035853.471,597526.324,-2.09

    3,1035862.06,597523.732,-2.93

     

    Em cảm ơn bác rất nhiều

    Có gì bác có thể gửi cho em tài liệu hoặc câu trả lời qua Email : thanhduan_mda@yahoo.com

    Em chân thành cảm ơn bác


  3. Mình rất mong bạn Tue_NV giúp mình fun điểm lên bản vẽ chấp nhận các thông số SST X Y Z Code được phân biệt nhau bởi cả dấu " " (dấu cách) , dấu tab, dấu phẩy....

    Nếu bạn lập được 1 hàm tách xâu phân biệt được các thông số đó thì chèn các ký hiệu trắc địa vào bản vẽ là bình thường.

    Mình đang vướng mắc vấn đề đó.

    Mong bạn giúp đỡ mình


  4. Bạn chạy thử :

    (defun c:RFT(/ data f h line pt pXY spc str ten val);Read File Txt
     ;|  By : Gia Bach, gia_bach @  www.CadViet.com             |;    
     (vl-load-com)
     (defun Split (Str Char / Lst pos)
       (while (setq pos (vl-string-search Char Str))
         (if (null Lst)
    (setq Lst (list (substr Str 1 pos)))
    (setq Lst (append Lst (list (read (substr Str 1 pos))))))
         (setq Str (substr Str (+ pos 2)) ))
       (setq Lst (append Lst (list (read Str)))))
    
     (if (setq ten (getfiled "Chon File txt" (getvar "dwgprefix") "txt" 8))
       (progn
         (or (tblsearch "layer" "Point") (command "-layer" "n" "Point" "") )
         (or (tblsearch "layer" "Sothutu") (command "-layer" "n" "Sothutu" "c" 3 "Sothutu" "") )
         (or (tblsearch "layer" "Caodo") (command "-layer" "n" "Caodo" "c" 4 "Caodo" "") )
         (setq spc (vla-get-ModelSpace (vla-get-ActiveDocument(vlax-get-Acad-Object))))
         (setq h 2);(* (getvar "dimtxt")(getvar "dimscale")))
         (setq f (open (findfile ten) "r"))
         (while (setq Line (read-line f))
    (if (vl-string-search "\t" Line)
      (progn
        (setq data (split Line "\t" )
    	  val (car data)
    	  pt  (cdr data))
        (if (not(vl-catch-all-error-p (vl-catch-all-apply 'vlax-3d-point pt)))
          (progn
    	(setq pXY (list (car pt)(cadr pt)))
    	(vla-put-Layer (vla-addpoint spc (vlax-3d-point pXY)) "Point")
    	(vla-put-Layer (setq str (vla-addtext spc val (vlax-3d-point pXY) h)) "Sothutu")
    	(vla-put-Alignment str 8)
    	(vla-put-TextAlignmentPoint str (vlax-3d-point pXY))
    	(vla-put-Layer (vla-addtext spc (caddr pt) (vlax-3d-point pXY) h) "Caodo")	)))))  ))
     (princ))

    Cảm ơn bạn Gia_Bach rất nhiều nhưng mình thấy file muốn fun điểm lên bản vẽ phải đúng theo một khuôn mẫu nhất định. Mình rất mong rằng file mà bạn fun điểm lên bản vẽ chấp nhận các thông số SST X Y Z Code được phân biệt nhau bởi cả dấu " " (dấu cách) , dấu tab, dấu phẩy....

    Nếu bạn lập được 1 hàm tách xâu phân biệt được các thông số đó thì chèn các ký hiệu trắc địa vào bản vẽ là bình thường.

    Mình đang vướng mắc vấn đề đó.

    Mong các bạn giúp đỡ mình


  5. :mellow: MUỐN THAM KHẢO VÀ HỌC HỎI NÊN MÌNH RẤT CẦN TÀI LIỆU HƯỚNG DẪN SỬ DỤNG AUTOCAD 3D CIVIL LAND DESKTOP 2008.

    BÁC NÀO CÓ TƯ LIỆU THÌ POST DÙM NHÉ! THANKS.............!

    Trả lời: Có đó bạn. bạn cần tài liệu gì? Cho bạn cả hai luôn nhé

    http://www.mediafire.com/?vewjymxyz2p

    http://www.mediafire.com/?3bomjmmbd4e

     

    mirror:

    vi_LandDektop_cadviet.pdf

    Huong dan SD land2008_cadviet.pdf

    • Vote tăng 6
×