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

tranducanh

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

    82
  • Đã tham gia

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

  • Ngày trúng

    3

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


  1. 1 giờ trước, vuongkhang92 đã nói:

    H mới cảm giác được cái gọi là sinh sau đẻ muộn. Thời mấy bác đang thảo luận thì em mới học sinh cấp 3...kekeke.. Sáng này e cũng bị lội tương tự như thế. Bác vào chỉnh độ phân giải của máy in PDF.. Giảm xuống 1 tí là OK luôn.

    Em cũng từng gặp lỗi này. Chỉnh độ phân giải của máy in PDF ở chỗ nào hả bác? Ko in thẳng trực tiếp được máy in luôn ạ?


  2. image.thumb.png.3433dd17be2461b18eda551335f2a9c9.pngEm xin phép hỏi các cao nhân trong cadviet vấn đề em đang gặp phải là: Em xuất các block ATT sang file .txt để đưa vào exel thì font chữ nó cứ bị lỗi. Em google với thử chuyển nhiều loại font chữ khác nhau vẫn ko tìm ra được cách. Vậy có cao nhân nào từng gặp hay có kinh nghiệm gì xử lý lỗi này ko ạ. Em xin cảm ơn!

    Xuat loi text att.dwg


  3. 12 phút trước, Duong Nhat Duy đã nói:

    Bạn đọc kỹ lisp nhé, có lệnh AT+ thêm tiền tố xử lý được vấn đề trên. Cá nhân mình thì mình để phần tên lô là 1 att riêng, số thứ tự riêng, thì đỡ được bước thêm tiền tố.

    Cảm ơn bạn, mình đã hiểu cách lisp của bạn hoạt động. Nó sẽ rất hữu ích cho mình trong hoàn cảnh phải edit số thứ tự block. Còn lisp của bác Ketxu viết giúp rất hợp với ý mình. Mình vẫn đang hi vọng bác ấy trợ giúp sửa nốt phần hiển thị dấu "," và dấu "." nữa là hoàn hảo. Tks bạn rất nhiều!

     


  4. 23 phút trước, Duong Nhat Duy đã nói:

    Gửi bạn tranducanh,

    Mình cũng chuyên ngành quy hoạch, hạ tầng giống như bạn luôn, công việc trên mình cũng làm rất nhiều rồi. Gần đây có một bài cũng tương tự như vậy, bạn tham khảo nhé.

    Giải pháp thì mình đã nêu trong bài đăng ở dưới, lisp sửa stt sẽ thay cho cái od oc chết tiệt gì đó ở trên, còn 2 lisp ma đối tượng block với tính diện tích là 2 lisp nhỏ, bạn cứ việc copy nguyên bọn nó vào phần cuối cái lisp của mình.

    Mình xin nhấn mạnh lại việc đánh số thứ tự là bạn nên rải block trước, đánh stt sau (rải block bằng nhiều cách như copy, array, ... hoặc bằng lisp cho 1 vài trường hợp cụ thể (ví dụ rải tại giao điểm, mút, ...), cái này mình sẽ ko đề cập kỹ hơn). Ví dụ đơn giản như việc bạn đã rải xong xuôi, đánh số lô ngon lành hết rồi xong tự nhiên lại phải bỏ 1 lô ở giữa thì bạn tính sao ?, nếu như lisp trên là xóa hết đi rải lại, còn không thì sửa tay, lisp của mình giả quyết được vấn đề đó. Tin mình đi, mình làm công việc này cả trăm nghìn lần rồi nên mới chia sẻ với bạn như vậy.

     

     

    Cảm ơn bạn Duong Nhat Duy. Hiện mình thấy lisp của bác Ketxu dùng rất tốt, nếu sửa được dấu phẩy nữa là rất ok. 
    Lisp của bạn theo lý thuyết thì mình vẫn cần để ứng dụng, nhưng với trường hợp nó chỉ đánh lại thứ tự số "tên lô đất" chứ ko phải đánh số lại theo 1,2,3,4,... như lisp của bạn. Nếu bạn chỉ cho mình cải tiến thì mình rất cảm ơn. 
    Còn hiện tại, nếu khi xong mà phải chèn lô hay bỏ lô thì mình đang dùng cách xuất block sang exel, đánh lại số thự tự lô bên exel rồi xuất ngược lại cad.
    Mong bạn chỉ giáo thêm.


  5. 1 giờ} trướ}c, ketxu đã nói:

    1 - Khi xuất ra Excel rồi vẫn có thể ấn Ctrl + H để Replace "." => ","
    2 - Nếu muốn làm luôn trong lisp thì bạn tìm dòng này :
     

    • cadvietlisp.lsp
      lisp help
    •  
    
    (_att n as (rtos a 2 2))

    Đổi nó thành 
     

    • cadvietlisp.lsp
      lisp help
    •  
    
    (vl-string-translate "." "," (_att n as (rtos a 2 2)))

     

    Dạ, em đã thử và ko thành công bác ạ. Nó không những không đổi dấu mà còn mất luôn định dạng copy liên tục bác :(


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

    ấy chết phải đầu tư kính hiển vi để tìm mất.

    Cái này bạn cần cài đặt trong hệ thống win thì phải cài dấu chấm thành dấu phẩy

    Không phải bác, mình sửa ở trong lệnh luôn ạ. Trước em sửa lệnh AE đo diện tích để hiện thị bao nhiêu chữ số sau dấu chấm bác DanhCong chỉ cho em giờ em mò được, dấu chấm thành phẩy thì được bác Gia_bach chỉ cho sửa theo thế này và em sửa được. Nhưng hôm nay em chỉ mò ra sửa được số hiển thị sau dấu chấm, còn làm sao để thay dấu chấm thành dấu phẩy em ko mò được. nãy em thử copy dòng (setq TexS (vl-string-subst "," "." Tes)) thay cho (setq *st* (1+ *st*)) là nó hỏng luôn lisp :((. Tại vì em ko học, ko biết gì về lisp nên em chỉ có bắt chước được thôi ạ :(

    image.png


  7. 9 giờ trước, ketxu đã nói:

    Viết cho khỏi quên :( Tôi biết là với mỗi tiện ích này, các bạn sẽ làm công việc nhanh gấp trăm lần, nhưng số người quay lại tri ân anh em viết lisp chả có mấy :))

     

    
    (defun c:foo(/ bn ld as lt 2v 3d e p p1 p2 _att a en)
    (vl-load-com)
    (setq bn "TKLD" ld "TENLODAT" as "DIENTICH" lt "TENBLOCK") ;Change by user
    (or *st* (setq *st* 1))
    (setq 2v vlax-ename->vla-object 3d vlax-3D-point)
    (while (not (setq s (ssget "_+.:E:S" (list (cons 2 bn)))))(princ "\nMiss!"))
    (setq 	e 		(2v (ssname s 0))
    		*st* 	(cond ((getint (strcat "Start Number <" (itoa *st*) ">:")))(*st*))
    		p 		(getpoint "\nBase point :")
    		p1 (3d p)
    		_att (lambda(b tag v / r)  
    				(foreach at (vlax-invoke b 'GetAttributes)
    					(if (eq tag (vla-get-TagString at))
    					(setq r
    						(if v (vla-put-textstring at v)
    								(vla-get-textstring at)
    						)
    					)))
    			r)
    )
    (while (setq p2 (acet-ss-drag-move s p "\nTo :"))
    	(cond ((setq en (bpoly p2))
    			(setq a (vla-get-area (2v en))) (entdel en)
    			(vla-move (setq n (vla-copy e)) p1 (3d p2))
    			(_att n ld 
    				(strcat 
    					(_att n lt nil) 
    					(if (< *st* 10) "-0" "-")
    					(itoa *st*)
    				)
    			)
    			(_att n as (rtos a 2 2))
    			(setq *st* (1+ *st*))
    		)
    	)
    )
    )

     

    Sự thật em rất cảm ơn bác rất nhiều, lisp bác viết 99% là chuẩn theo mong muốn của em. Chỉ có một cái dấu em muốn hiển thị chỗ diện tích là dấu "phẩy" chứ ko phải là dấu "chấm" để em có thể xuất sang exel. Trước có bác trợ giúp em sửa lisp AE nhưng giờ em áp dụng nó ko được. Bác có thể chỉ giáo nốt chỗ ấy được ko ạ. Đa tạ bác rất nhiều ạ.

    • Vote giảm 1

  8. 18 giờ trước, huunhantvxdts đã nói:

    THẾ NÓ BÁO THẾ NÀO?????BẠN DÙNG CÓ ĐÚNG KHÔNG??

    Dạ, lisp bác viết nó vẫn hiện phần diện tích nhưng nó làm mất cái block gốc ban đầu, mặc định tên là LK06 chứ ko phải theo tên Block gốc ạ. Với lại mình phải chọn tên số lô bắt đầu thay vì tự nhảy như Lisp OCA ạ. Lisp của bác Ketxu rất ok ạ. 
    Cảm kích vì sự nhiệt tình của bác. Em cảm ơn ạ!


  9. 1 giờ} trướ}c, quocmanh04tt đã nói:

    Bạn đã đặt chân đến "Thành Rome", tuy nhiên bạn dẫn theo 1 "binh đoàn command" nên mình không có ý kiến gì thêm.

    P/s: Nếu là mình, mình sẽ cho binh đoàn đó nghỉ, thay vào đó là 1 đoàn ca múa nhạc. hehehe ... (Chúng sẽ ca hát, nhảy múa ... thậm chí sexy gây hưng phấn hơn).

    Ý bác là không sử dụng những lisp cũ mà viết lại hẳn lisp mới ạ -_-


  10. 12 giờ trước, huunhantvxdts đã nói:

    Vất vã để học hỏi thêm 1 tí. có chi bác @quocmanh04tt giúp đở thêm 

    
    (defun ChangeTagVal (obj tagName val)
      (setq obj(vlax-ename->vla-object obj))
      (foreach att (vlax-invoke obj 'GetAttributes)
        (if (= tagName (vla-get-tagstring att))
          (progn
    	(vla-put-textstring att val)
    	(vla-update att)))
      )
    )
    (defun C:CLD (/ STT lodat thongtin kyhieu diendat diemtruoc)
    (command "undo" "be")
    (setq STT1 STT2)
    (if (not STT1) (setq STT1 "So lo bat dau"))
    (setq STT (getstring (strcat "\nSo lo bat dau <" STT1 ">")))
    (if (= STT "") (setq STT STT1))
    (setq lodat (entsel "\nChon BLock dien ky hieu"))
    (setq thongtin (car lodat))
    (while
     	 (or
       	 (null lodat)
       	 (/= "INSERT" (cdr (assoc 0 (entget (car lodat)))))
    	 )
    	(princ "\nDoi tuong khong phai la Block! Chon lai")
     	(setq lodat (entsel "\nChon BLock dien ky hieu"))
    	(setq thongtin (car lodat))
    	)
    (setq kyhieu (strcat "KL06-" STT))
    (setq diendat (getpoint (cadr lodat) "\nPick diem dat:"))
    (command "bhatch" diendat "")
    (Command "area" "o" (entlast))
    (command "_.erase" (entlast) "")
    (command ".MOVE" (car lodat) "" (cadr lodat) diendat "")
    (ChangeTagVal thongtin "TENLODAT" kyhieu)
    (ChangeTagVal thongtin "DIENTICH" (rtos (getvar "area") 2 1))
    (setq diemtruoc diendat)
    (while (setq diendat (getpoint diemtruoc "\nPick diem dat:"))
    (setq STT (+ (atoi STT) 1))
    (setq STT2 (rtos STT 2 0))
    (command "bhatch" diendat "")
    (Command "area" "o" (entlast))
    (command "_.erase" (entlast) "")
    (command ".COPY" (car lodat) "" diemtruoc diendat "")
    (setq thongtin (entlast))
    (setq kyhieu (strcat "KL06-" (rtos STT 2 0)))
    (ChangeTagVal thongtin "TENLODAT" kyhieu)
    (ChangeTagVal thongtin "DIENTICH" (rtos (getvar "area") 2 1))
    (setq STT STT2)
    )
    (command "undo" "end")
    (princ)
    )

     

    Cảm ơn bác đã quan tâm. Lisp bác viết ấy em thử down về dùng thử nhưng ko được ạ :v


  11. 14 giờ trước, Duong Nhat Duy đã nói:

    Bạn đã thử copy, gộp 3 file lisp thành 1 file chưa, mình nghĩ chả cần biết tí gì về lisp cũng có thể làm được.

    Em chưa từng nghĩ tới, nhưng thế chắc ko ổn vì phải dùng lệnh mới định dạng được số nào sẽ edit theo lệnh, số nào giữ nguyên chứ ạ.


  12. Em xin chào các tiền bối!
    Hôm trước em có xin trợ giúp các tiền bối sửa lisp AE và đã được trợ giúp rất nhiệt tình. Hôm nay em xin muốn hỏi là em muốn kết hợp 3 lisp vào trong một lệnh để tiện trong công việc có được ko ạ?
    Liệu em có thể copy đối tượng block ATT như trên mà số lô đất vẫn nhảy như dùng lisp OCA, chọn điểm trong lô đất đặt block nó sẽ nhận diện tích trong lô đất ấy theo lisp AE và ghi luôn vào dòng chữ em khoanh giống như dùng lisp TT không ạ? Có lẽ em hơi tham nhưng sự thật nếu được rất tiện trong thống kê lô đất. Mong các tiền bối giúp đỡ ạ. Em xin cảm ơn nhiều!image.thumb.png.c733e024d30518ee4b8cb995bd58406a.png

    03-nghich dim xp.dwg

    copy tien so od_oc_oca .lsp

    MA doi tuong block-(TT).lsp

    Tinh dien tich (AE) ĐA cai tien.LSP


  13. 11 phút trước, Danh Cong đã nói:

     

    Đọc thử bài này, có nội dung được đề cập: https://www.cadviet.com/forum/topic/166577-nhờ-các-anh-chỉnh-sửa-giúp-em-lisp-sau/

    Đọc không hiểu thì quay lại hỏi tiếp.

     

    Dạ, em cảm ơn anh, em đã rút được dãy số làm tròn từ 5 số sau dấu chấm về 1 số sau dấu chấm. Tuy vậy em đọc trong ấy vẫn chưa thấy cách để sửa dấu "." thành dấu ",". Mong anh chỉ giúp thêm ạ. Em xin cảm ơn!


  14. Chào các cao nhân. Em hiện đang sử dụng lisp tính diện tích AE, tuy vậy giá trị hiện thị ra chưa theo mong muốn tính chất của công việc. Em lại ko biết sửa lisp. Hiện giá trị hiện ra là dấu "." và 5 chữ số sau dấu ".". Em muốn giá trị hiện thị ra là dấu "," và chỉ có một số sau dấu "," thì sửa ở đâu ạ? VD: 100.56789 thành 100,6 Em xin cảm ơn ạ!

    03-nghich dim xp.dwg

    Tinh dien tich (AE).LSP

×