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

quickandfine

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

    99
  • Đã tham gia

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

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


  1. Theo mình biết và làm từ trước đến nay, kể cả đơn vị trong bản vẽ là milimet đi chăng nữa thì cũng vẫn phải ghi chú chú rõ ràng để tránh nhưng "thắc mắc" kiểu như của bạn (từ phía tư vấn, chủ đầu tư...- Họ biết chắc là như thế nhưng vẫn "vặn" thì sao?). Các bản vẽ của mình (và các bản vẽ mình từng đọc,check) bao giờ cũng có 2 câu ghi chú về kích thước và cao độ là:

    1- Kích thước trong bản vẽ là.....

    2- Cao độ trong bản vẽ ghi bằng...

    Chúc bạn vui!


  2. Để chọn All thì ngay khi hỏi chọn đối tượng bạn Space tiếp.

    Chú ý code này có chỗ hay có chỗ dở, nhừng tạm chấp nhận được. Mình vừa test xong

    Cảm ơn anh Ket.

    Có điều này không biết có làm được hay không nhưng em cứ xin nêu ra như sau:

    Giả sử mình có Block A, trong A có 2 đối tượng với các tính chất như sau:

    - đối tượng B có layer là layer 1, màu là Bylayer - giả sử bylayer của layer 1 ở đây là màu đỏ (màu 1)

    - đối tượng C có layer là layer 2, màu cũng là Bylayer- giả sử bylayer của layer 2 ở đây là màu vàng (màu 2)

    Khi dùng đoạn lisp trên, chuyển toàn bộ layer của đối tượng B và đối tượng C về layer "Block"

    thì ta sẽ được màu của B và C là màu Bylayer (của layer Block) và giả sử là màu xanh greeen (màu 3)

    Bây giờ em muốn là: Dù ban đầu màu của B và C là Bylayer nhưng sau khi chuyển layer sang layer Block màu của nó vẫn không thay đổi (trong trường hợp trên,

    sau khi chuyển thì màu của B vẫn là màu đỏ, màu của C vẫn là màu vàng, dù layer đã chuyển sang layer Block - có màu xanh)

    Nôm na là ta chỉ chuyển layer thôi, còn màu thế nào thì cứ giữ y nguyên như ban đầu của nó vậy.

    P/S: Đoạn lisp trên sau khi anh sửa lại thì lại chỉ chuyển layer của B và C sang Layer Block thôi, còn của A thì lại giữ nguyên thì phải ạ!

    Chúc anh vui!


  3. Chào anh Ket.

    Em thử đoạn lisp trên thì thấy là hầu như đều Ok rồi. có điều là em chưa biết chọn "Select all" kiểu gì cả. sau khi gõ lệnh mình chọn đối tượng thì được, nhưng nếu enter tiếp (để chọn All) thì báo lỗi ạ. Anh rảnh thì kiểm tra giúp em nhé. Không thì được thế này cũng tốt rồi ạ.

    Em cảm ơn anh nhiều!


  4. Nếu bạn dùng lisp mình post thì vui lòng kèm theo cả link nữa để mình dò ^^

    Còn lisp trên thì bị thiếu mất dấu '

    Bạn thêm dấu ' vào trước đoạn này : ((0 . "INSERT"))

    Chào anh Ket.

    Đoạn lisp mà em tìm được nằm ở link này ạ:

    http://xaydungit.vn/diendan/showthread.php?8195-Chuy%E1%BB%83n-Layer-t%E1%BA%A5t-c%E1%BA%A3-%C4%91%E1%BB%91i-t%C6%B0%E1%BB%A3ng-trong-Block-v%E1%BB%81-Layer-hi%E1%BB%87n-h%C3%A0nh

    Em đã thêm dấu ' như anh nói và đoạn lisp đã chạy được. Nhưng em nhờ anh thêm chút nữa ạ.

    1- Em chỉ muốn chuyển layer thôi chứ không muốn chuyển màu của các đối tượng (Cả Block và đối tượng trong Block)

    2- Thay vì chuyển về layer hiện hành, có thể chuyển về layer tên là "Block". (cái này chỉ là ý chủ quan của em thôi, không thì em sẽ chọn layer Block làm hiện hành cũng được ạ.)

    3- Có 2 tùy chọn khi chuyển là: a/- Tất cả Block trong bản vẽ đều được chuyển Layer (ưu tiên cái này) và b/- Chọn một hoặc một số Block cần chuyển layer.

    Em xin cảm ơn nhiều ạ!


  5. Hề hề hề,

    Dùng thử cái này coi sao nhé

    
    (defun c:clb (/ bls)
    (vl-load-com)
    (if (not (tblsearch "layer" "BLOCK"))
       (command "layer" "m" "Block" "")
    )
    (alert "\n Chon tap hop cac block muon chuyen layer")
    (setq bls (acet-ss-to-list (ssget (list (cons 0 "insert")))))
    (foreach b bls
    	(cblc B)      
    )
    (princ)
    )
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defun cblc (bl / els a els1)
    
    (setq els (entget bl)
              	els (subst (cons 8 "block") (assoc 8 els) els)
                   a (entnext bl)  )
    	(entmod els)
    	(while (/= (cdr (assoc 0 (entget a))) "SEQEND")
               (if (/= (cdr (assoc 0 (entget a))) "INSERT")
                   (progn
                    	(setq els1 (entget a)
                             els1 (subst (cons 8 "block") (assoc 8 els1) els1) )
                       (entmod els1)
                   )
                   (cblc a)
            	)
            	(setq a (entnext a))
         )
    )
    

    Chào bác phamthanhbinh.

    Em dùng thử đoạn lisp trên thì cũng thấy báo lỗi là:

     

    Command: clb

    Select objects: 1 found

    Select objects: ; error: bad argument type: lentityp nil

     

    Bác xem giúp em bị lỗi ở chỗ nào nhé. Với lại em thấy đoạn này cũng đang chỉ chuyển Block về layer "Block" còn các đối tượng trong block đó vẫn là layer "cũ" của nó. Chắc do em diễn đạt chưa được rõ. Em gửi kèm File lên đây bác xem có rõ hơn không và giúp em với nhé!

    http://www.cadviet.com/upfiles/3/110072_block_layer_1.dwg


  6. Làm được - lúc nào rảnh mình post

    Cảm ơn anh Ket.

    Em mới tìm thấy đoạn lisp của anh bên xaydungit có tác dụng chuyển layer của tất cả các đối tượng trong block về Layer hiện hành. Đoạn lisp đó em copy về và save dưới dạng .LSP như sau ạ.

    http://www.cadviet.com/upfiles/3/110072_coblk.lsp

    Em dự định là sẽ dùng đoạn lisp này để áp dụng cho ý định của mình. Nhưng khi add vào Cad thì nó báo lỗi là

    Command: aq

    APPLOAD CoBlk.Lsp successfully loaded.

    Command: ; error: bad argument type: consp "INSERT".

    Anh xem em copy có lỗi gì không. Hoặc anh rảnh thì Post đoạn lisp mà anh nói cho em xin với nhé.

    Thanks anh nhiều nhiều ạ!


  7. Em chào bác Hoành ạ.

    Em muốn tìm một đoạn lisp chuyển các đối tượng của Block về cùng một Layer mà tìm chưa thấy được, Em thấy đoạn lisp này của bác là gần với mong muốn của em nhất. Ví dụ Em có một Block A, trong A có 2 đối tượng: 1 đối tượng B thuộc layer 1, 1 đối tượng C thuộc Layer 2. Bây giờ em muốn đối tượng B và đối tượng C chuyển về cùng một Layer là Layer Block. Em đã thử đoạn lisp trên của bác thì nó chuyển đối tượng A về layer Block (Còn B và C thì vẫn giữ nguyên layer của nó). Bác có thể giúp em chuyển luôn cả layer của B và C về layer BLock giống như A được không ạ. Em xin cảm ơn ạ

    Các bác ơi đoạn lisp như yêu cầu của em có làm được không ạ? Sao không thấy ai ý kiến gì thế? Em tìm trên diễn đàn 3 ngày rồi mà chưa thấy Lisp nào giống như yêu cầu. Các bác giúp em với ạ!


  8. Lisp O2L (Object to layer) dưới đây sẽ giúp bạn. Nếu bạn muốn chuyển các đối tượng khác, bạn hãy copy rồi thêm dòng lệnh (cons "KIEUDOITUONG" "TENLAYER") vào cụm các lệnh cons phía dưới.

     

    (defun c:o2l ( / ss pp lstoblayer)  (setq    lstoblayer 	(list   	(cons "DIMENSION" "DIM")		; chuyen doi tuong Dimension ve layer DIM        (cons "HATCH" "HATCH")   	(cons "INSERT" "BLOCK")		; BLOCK (la doi tuong insert) ve layer BLOCK   	(cons "*TEXT" "TEXT")		; TEXT va MTEXT ve layer text 	)      )  (foreach pp lstoblayer        (setq ss (ssget "X" (list (cons 0 (car pp)))))    (if (not (tblsearch "layer" (cdr pp)))      (command ".layer" "m" (cdr pp) "")    )    (command ".chprop" ss "" "la" (cdr pp) "")      )    (princ))

    Em chào bác Hoành ạ.

    Em muốn tìm một đoạn lisp chuyển các đối tượng của Block về cùng một Layer mà tìm chưa thấy được, Em thấy đoạn lisp này của bác là gần với mong muốn của em nhất. Ví dụ Em có một Block A, trong A có 2 đối tượng: 1 đối tượng B thuộc layer 1, 1 đối tượng C thuộc Layer 2. Bây giờ em muốn đối tượng B và đối tượng C chuyển về cùng một Layer là Layer Block. Em đã thử đoạn lisp trên của bác thì nó chuyển đối tượng A về layer Block (Còn B và C thì vẫn giữ nguyên layer của nó). Bác có thể giúp em chuyển luôn cả layer của B và C về layer BLock giống như A được không ạ. Em xin cảm ơn ạ

    • Vote giảm 1

  9. Chào các anh ạ. Em nhờ các anh viết hộ một đoạn lisp có tác dụng chuyển layer (chỉ chuyển layer thôi chứ màu thì giữ nguyên ạ) của toàn bộ Block có trong bản vẽ về một layer (Giả sử là layer Block) - Em chưa tìm thấy đoạn lisp tương tự trên diễn đàn, nếu có các anh gửi hộ em xin đường link với ạ. Ý của em được diễn đạt trong File đính kèm sau ạ.

    Mong các anh giúp đỡ. Em xin cảm ơn nhiều ạ.

    http://www.cadviet.c...block_layer.dwg


  10. Em cảm ơn các anh.

    Như vậy, phải cài Express Tool thì mới dùng được, mà máy em không có Express, em dùng Cad2007, như vậy cài thêm Express thì phải làm như thế nào.

    Theo mình biết thì bạn vào Control panel - Chọn Add or Remove programe - Chọn AutoCad, Chọn Change, Sau đó có 3 lựa chọn là Add or Remove Features, Remove và Repair, bạn chọn Add or remove Features rồi làm theo hướng dẫn trong đó là được.


  11. Chào các anh.

    Với khả năng hạn chế của em bây giờ thì em mới chỉ biết copy các đoạn lisp của các anh trên diễn đàn về rồi sửa một vài chỗ nho nhỏ (đa phần cũng là gợi ý của các anh) cho phù hợp với bản thân. Giờ em học viết được một đoạn lisp nho nhỏ, chủ yếu là rút ngắn đi thao tác lệnh của CAD thôi, nhưng có vài chỗ nhờ các anh chỉ giúp như sau ạ.

    Em có viết mấy đoạn lisp nhỏ như sau

    1- Đoạn lisp thứ nhất liên quan đến UCS.

    Em có một đối tượng nằm xiên bên model, sang layout tạo Viewport, em muốn đối tượng đó chuyển thành nằm ngang thì click đúp chuột vào Viewport, gõ ucs tùy chọn Object

    Sau khi chuyển ucs về object đó rồi thì tiếp tục Plan - curent ucs là xong. em đã viết rút ngắn lại như đoạn lisp em gửi sau đây.

    Em cũng tạm thỏa mãn với đoạn này rồi, nhưng có thể làm nhanh hơn được không?

    Giả sử sau khi UCS - tùy chọn Object, chọn được Object rồi thì tự động PLAN current UCS luôn đỡ phải gõ tiếp lệnh PC như của em nữa ạ.

    2- Đoạn lisp liên quan đến XREF

    - Đoạn lisp để attach file: Em viết được như vậy nhưng khi gõ lệnh XRA thì không hiện lên bảng cho mình chọn file mà lại hỏi tên file.

    Giờ em muốn cad hiện lên bảng "Select reference file" thì phải sửa thế nào ạ

    - Các đoạn khác(XRU,XRR,XRD) khi gõ lệnh thi cad có thực hiện nhưng sau đó lại xuất hiện chữ "Nil" em chưa hiểu đó là gì. Em đã thử thêm dòng (princ) nhưng cũng không được.

    Bật F2 lên xem thì có thấy cả "Unknown command XRU...." nữa ạ.

    Nếu các vấn đề em hỏi đã tồn tại trên diễn đàn thì mong các Mod thông cảm vì em cũng không biết nên vào mục nào để hỏi vì 2 vấn đề lại không "gần" nhau lắm

    nên em đành lập một topic riêng. Hi vọng sớm có câu trả lời đề có thể Del topic này đi được ạ

    Em xin cảm ơn ạ!

    Đây là 2 đoạn lisp nhỏ em viết ạ:

    http://www.cadviet.c...10072_01ucs.lsp

    http://www.cadviet.c...0072_02xref.lsp


  12. Đây là Lisp mình sưu tập được bạn dùng thử, mình dùng thì thấy rất đúng yêu cầu của bài rùi

    
    (defun c:ckt ()
    (princ "\n Chon duong giong:")
    (princ "\n Chon cac duong kich thuoc:")
    (setq chon2  (ssget))
    (setq ktra1 (getstring "n\Lua chon: giong Duoi (D), giong Tren (T), theo duong thang (V):"))
    
    
    (if  (OR (= ktra1 "G") (= ktra1 "g"))
    (progn
    (setq chon1 (entsel  "\n Chon duong giong:"))
    (setq chon1 (car chon1))
    (setq ktra (cdr(assoc 0(entget chon1)))) 
    (if (= ktra "LINE")
    
      (progn
    
     (setq DAU (cdr(assoc 10(entget chon1))))
     (setq CUOI (cdr(assoc 11(entget chon1))))
     (giong)
         )
    )   ;-----------ket thuc if 1
    ;  (if (= ktra "LWPOLYLINE")
     ;(progn
     ;   (setq danhsach nil)
     ;   (setq j 1)
     ;   (setq eg (entget chon1))
     ;  (setq DAU (cdr(assoc 10(entget chon1))))
     ;   (while (/= DAU nil)
     ;  (setq danhsach (append danhsach DAU))
     ;  (setq j (+ j 1))
     ;;  (setq cu (list 10 (car DAU) (cadr DAU) 0))
      ;  (setq moi (list 11 (car DAU) (cadr DAU) 0))
     ; (setq eg (subst moi cu eg))
      ;  )
    
     ;(setq i 1)
     ;(setq DAU (nth i danhsach))
     ;(setq CUOI (nth (+ i 1) danhsach))
     ;(giong)
     ;)  
    
      ;)
    
     )
    ) ;--------ket thuc if2
    
    (if  (OR (= ktra1 "D") (= ktra1 "d"))
    (progn
     (setq DAU (getpoint  "\n Chon diem lam moc :"))
     (setq CUOI (polar DAU 0 10))
     (giong)  
    )
    );-------Dong if
    (if  (OR (= ktra1 "V") (= ktra1 "v"))
    (progn
     (setq DAU (getpoint  "\n Chon diem dau :"))
     (setq CUOI (getpoint  "\n Chon diem thu hai :"))
     (giong)  
    )
    );-------Dong if
    (if  (OR (= ktra1 "T") (= ktra1 "t"))
    (progn
     (setq DAU (getpoint  "\n Chon diem lam moc :"))
     (setq CUOI (polar DAU 0 1))
     (setq x1 (car DAU))
     (setq y1 (cadr DAU))
     (setq x2( car CUOI))
     (setq y2 (cadr CUOI))
     (setq kq1 (/ (- y1 y2) (- x1 x2)))
    
     (setq k 0)
     (while (setq ENT (ssname chon2 k))  ;--------> duyet tung thang 1
    (setq p1 (cdr(assoc 11(entget ENT))))
    (setq p2 (cdr(assoc 10(entget ENT))))
    (setq p3 (cdr(assoc 14(entget ENT))))
    (setq p4 (cdr(assoc 13(entget ENT))))
    (setq xd (car p1))
    (setq yd (+ (* (- xd x1) kq1) y1))
    (setq xc (car p2))
    (setq yc (+ (* (- xc x1) kq1) y1))
    ;--------------------------giong duoi---------------------------------------------
     (setq eg2 (entget ENT))
     (setq tdcud (list 11 (car p1) (cadr p1) 0))
     (setq tdcuc (list 10 (car p2) (cadr p2) 0))
     (setq tdmoid (list 11 xd yd 0))
     (setq tdmoic (list 10 xc yc 0))
    
     ; (setq caodo (rtos caodo))
     ;(setq ten (cons 1  caodo))
     (setq eg2 (subst tdmoid tdcud eg2))
     (setq eg2 (subst tdmoic tdcuc eg2))
     (entmod eg2)
     (SETQ K (+ K 1))
     )
     )
    );dong if
    )   
    )
    (defun giong ()
     (setq x1 (car DAU))
     (setq y1 (cadr DAU))
     (setq x2( car CUOI))
     (setq y2 (cadr CUOI))
     (setq kq1 (/ (- y1 y2) (- x1 x2)))
    
     (setq k 0)
     (while (setq ENT (ssname chon2 k))  ;--------> duyet tung thang 1
    (setq p1 (cdr(assoc 11(entget ENT))))
    (setq p2 (cdr(assoc 10(entget ENT))))
    (setq p3 (cdr(assoc 14(entget ENT))))
    (setq p4 (cdr(assoc 13(entget ENT))))
    (setq xd (car p3))
    (setq yd (+ (* (- xd x1) kq1) y1))
    (setq xc (car p4))
    (setq yc (+ (* (- xc x1) kq1) y1))
    ;--------------------------giong duoi---------------------------------------------
     (setq eg2 (entget ENT))
     (setq tdcud (list 14 (car p3) (cadr p3) 0))
     (setq tdcuc (list 13 (car p4) (cadr p4) 0))
     (setq tdmoid (list 14 xd yd 0))
     (setq tdmoic (list 13 xc yc 0))
    
     ; (setq caodo (rtos caodo))
     ;(setq ten (cons 1  caodo))
     (setq eg2 (subst tdmoid tdcud eg2))
     (setq eg2 (subst tdmoic tdcuc eg2))
     (entmod eg2)
     (SETQ K (+ K 1))
     )
    )
    

    Em down về dùng thấy đoạn lisp trên chỉ cho dùng 4 lần. Em đã thử xóa các thứ liên quan đến biến "thu" và thấy dùng được nhiều lần hơn mà không bị hỏi "liên hệ với sdt..." nữa (Đoạn lisp phía trên em đã sửa ạ). Nhưng em cũng không sửa được để lisp có thể cắt được dim ngang theo ý của tqcuongutc (em chỉ mày mò tự sửa thôi chứ giờ em mới bắt đầu học lisp (hì). Có bác nào giúp chúng em với ạ.


  13. Bạn copy nguyên chữ @ của bạn vào ô Find xem sao

    Em thử copy nguyên chữ @ rồi Find --> Replace nhưng cũng không được anh Ket ạ

    @Darkvn: Mình hay phải ghi bước thép theo kiểu @150. Có lần mình đã từng Replace toàn bộ "x" thành "@", Nhưng rồi người ta yêu cầu lại "@" phải thành "x" Nên mình Replace "@"-->"x" Nhưng không được thậm chí toàn bộ Text trong bản vẽ cứ thành @@@@ hết.

    ==> Cách của tớ là: Tìm trên diễn đàn có đoạn lisp ghi bước @, rồi copy nó thành 2 đoạn, một đoạn thì Ghi bước "@" một đoạn ghi bước "x". Như thế lúc nào cần "@" thì "@", cần "x" thì "x". Tuy có hơi thủ công nhưng tớ chưa nghĩ ra biện pháp nào hay hơn nên vẫn đang làm như thế.


  14. Theo em thì do bác NTD này ko diễn đạt đúng ý đồ thôi, em là một thợ vẽ nên thường dụng tới thằng này lắm, khi có một mặt bằng và muốn vẽ 4 mặt đứng xung quanh: thay vì phải copy ra một mặt bằng nữa rồi vẽ xong mặt đứng này lại phải quay cái mặt bằng vừa copy ra để vẽ tiếp cái khác===> vừa nặng máy vừa khó đối chiếu mặt đứng với MB

    Vì vậy sữ dụng lệnh Plan để vẽ 4 mặt đứng nằm xung quanh cái MB. có lẽ đây là "View port bên Model" của bác ấy?!

    Em xin góp một code để giảm phiền toái khi phải sữ dụng Plan nhiều. Lisp yêu cầu chọn đối tượng để zoom object và nhập vào góc quay. lệnh AS để thay đổi View, lệnh ASS để trở về Plan của UCS World

    (defun c:AS(/ goc dtz)
    (setq dtz (ssget)
      	goc (getreal "\nangle: "))
    (command "ucs" "z" (* -1 goc) "")
    (command "plan" "")
     (command "zoom" "o" dtz "")
    (princ)
    )
    (defun c:AsS()
    (command "ucs" "")
    (command "plan" "")
    (princ)
    )
    

    Chào các bác.

    Em chưa biết nhiều về Ucs hay Plan lắm, nhưng thi thoảng thấy mấy anh trong phòng xoay view port bằng lệnh UCS rồi Plan gì đó (em chưa nhìn kịp) thì thấy cũng hơi lâu, Em thử chạy đoạn lisp của bác lp_hai thì thấy nhanh hơn, nhưng có điều nếu góc xoay là lẻ thì mình làm thế nào? Liệu có thể chọn góc xoay bằng cách pick 2 điểm không ạ? Em xin cảm ơn ạ!

    • Vote tăng 1

  15. Cảm ơn Anh Tuệ rất nhiều. :bigsmile:

    Đây là lisp đã đã được sửa để tính diện tích cả hình có lỗ khoét và không có lỗ khoét.

    (defun c:bdt()(setvar "cmdecho" 0)(command "undo" "begin")(setq lacol (getvar "CEColor"))(setq ladin (getvar "dimzin"))(setq laos (getvar "osmode"))  (if (not tl) (setq tl 1))(if (not h) (setq h 1))(setq tl1 (getreal (strcat "\nty le ban ve < 1/" (rtos tl 2 0) " >: 1/"))    caot1 (getreal (strcat "\nCao text < " (rtos h 2 2) " >: ")))(if tl1 (setq tl tl1))(if caot1 (setq h caot1))(setq k 0 tdt 0)(setvar "dimzin" 0)(setvar "OSMODE" 0)(setq PT (getpoint "\nChon diem xuat bang thong ke dien tich (mep trai):"))(setq 	P1 (list (+ (car PT)(* 6 h)) (cadr PT))    P2 (list (+ (car PT)(* 22 h)) (cadr PT))    P3 (list (car PT) (- (cadr PT)(* 3 h)))    P4 (list (car P1) (cadr P3))    P5 (list (car P2) (cadr P3))    P6 (list (+ (car PT)(* 11 h)) (+ (cadr PT)(* 2 h)))    P7 (list (+ (car PT)(* 3 h)) (- (cadr PT)(* 1.5 h)))    P8 (list (+ (car PT)(* 14 h)) (- (cadr PT)(* 1.5 h))));setq(command "pline" PT P2 P5 P3 "C"        "pline" P1 P4 ""        "text" "m" P6 (* 1.2 h) 0 "%¶ng thèng kª diÖn tÝch"        "text" "m" P7 h 0 "STT"        "text" "m" P8 h 0 "DiÖn tÝch (m2)");command(setq pt1 (getpoint "\n Chon mien tinh dien tich : "))(while (/= pt1 nil)(command "erase" ss "")(setq k (+ 1 k))(command "TEXT" "m" pt1 (* 3 h) 0 (rtos k 2 0))(setq PT (list (car P3) (cadr P3))    P1 (list (+ (car PT)(* 6 h)) (cadr PT))    P2 (list (+ (car PT)(* 22 h)) (cadr PT))    P3 (list (car PT) (- (cadr PT)(* 3 h)))    P4 (list (car P1) (cadr P3))    P5 (list (car P2) (cadr P3))    P7 (list (+ (car PT)(* 3 h)) (- (cadr PT)(* 1.5 h)))    P8 (list (+ (car PT)(* 14 h)) (- (cadr PT)(* 1.5 h)))    P9 (list (car PT) (- (cadr P3)(* 3 h)))    P10 (list (car P1) (cadr P9))    P11 (list (car P2) (cadr P9))    P12 (list (car P7) (- (cadr P3)(* 1.5 h)))    P13 (list (car P8) (cadr P12))    );setq(setq frome (entlast));; chon doi tuong cuoi cung truoc khi boundary(command "cecolor"4 "-boundary" pt1 "");; boundary(setq toe (entlast));; chon doi tuong cuoi cung sau khi boundary(setq cur frome	ss (ssadd) S 0)(while 	(not (eq cur toe));; chon cac doi tuong tu frome den toe	(setq cur (entnext cur) ss (ssadd cur ss))	(command "area" "S" "O" ss "" "")	(setq dt (getvar "area") S (+ S dt)));while(command "area" "A" "O" "L" "" "")(setq dt (getvar "area"))(setq S (* (+ S (* dt 2)) tl tl) tdt (+ s tdt))  (setvar "CEColor" lacol)(command "pline" PT P2 P5 P3 "C"     "pline" P1 P4 ""     "text" "m" P7 h 0 (rtos k 2 0)     "text" "m" P8 h 0 (rtos s 2 2))(setq pt1 (getpoint (strcat "\nTong dien tich = " (rtos tdt 2 3) "m2. chon mien do tiep theo..."))));while(command "erase" ss "")(setq ss nil)(setvar "DIMZIN" ladin)(command 	"pline" P3 P9 P11 P5 "C"        "pline" P10 P4 ""        "text" "m" P12 h 0 "Tæng"        "text" "m" P13 h 0 (rtos tdt 2 2));command(setvar "OSMODE" laos)(command "undo" "end")(setvar "cmdecho" 1))

     

    @vantiteo: Mình đang bận quá, tranh thủ thời gian ngủ trưa để sửa lại lisp này cho mọi người thôi. bạn có thể xem lisp của anh Tuệ để tìm ra chỗ thiếu sót của bạn. lisp của anh Tuệ rất hay.

    @xuandao0708: Bạn cần phân biệt tỷ lệ vẽ và tỷ lệ in nhé. lisp này yêu cầu nhập vào tỷ lệ vẽ vì chỉ có tỷ lệ vẽ mới ảnh hưởng trực tiếp đến kết quả tính toán. theo như bạn nói thì thì tỷ lệ 1/500 của bạn chính là tỷ lệ in của bản vẽ ra giấy. còn thực chất bản vẽ của bạn vẫn được vẽ với tỷ lệ 1/1. nghĩa là 1 đơn vị vẽ trong cad sẽ tương ứng với 1 đơn vị đo ngoài thực địa.

    Chào bác Thaistreetz. Bác cho em hỏi chút ạ.

    -Nếu em muốn phần tỷ lệ trong đoạn lisp này luôn là 1:1 thì em phải sửa thế nào ạ?


  16. Sorry bạn vì đã nghĩ oan cho bạn. Do mình vẫn đọc được bài post,(mặc dù thấy nó bị đổi màu mà chửa biết tại sao) nên cứ tưởng bạn cũng đọc được.

    Vậy thì đền cho bạn nhé.

    Đoạn code đó đây:

    
    (if dt2
     (progn
      (initget "Y N")
      (setq ;;;;kwrd (getkword "\nBan muon Text tang dan ? [Y/<N>]  ")
              	giaso (getreal "\nGia so: "))
      (setq x 1)
      (repeat (1- sl)
        	(command ".copy" dt2 "" p1 (polar p1 (angle p1 p2) (* (distance p1 p2) x)))
        	;;;;(if (eq kwrd "Y")
            	(progn
      (CHIA3 (cdr (assoc 1 (entget dt2))))
      (setq daup (if (not (vl-string-search "." (cadr ds)))
                                        	0
                                        	(- (strlen (cadr ds)) (vl-string-search "." (cadr ds)) 1)
                                         )
                     )
                     (entmod (subst (cons 1 (strcat (car ds) (THEM0 (cadr ds) (rtos (+ (atof (cadr ds)) (* x giaso)) 2 daup)) (caddr ds)))
                                            	(assoc 1 (entget (entlast))) (entget (entlast)))
                     )
                     (entupd (entlast))
            	)
             ;;;;)
             (setq x (1+ x))
      )
    )
    )
    
    

    Hề hề hề, một lần nữa xin lỗi bạn và mong bạn lần sau rút kinh nghiệm kẻo lại bị các mode cho treo bài nữa thì thiệt thòi lắm lắm.

    Không sao bác ạ. Bác cũng đâu có biết sự thể như vậy đâu.Em thay được đoạn code đó và lisp chạy được là em mừng lắm rồi!


  17. xin chào các bác trên diển đàn!.mình có một trường hợp thắc mắc về dim, xin các pác giúp đỡ. mình có một cái dim. bây giờ mình muốn dùng lệnh để chuyển text của cái dim đó xuống phía dưới đường dim, nhưng mình không biết dùng lệnh gì. mong các pac giúp đỡ. thank các bác nhiu.

    Nếu có "một cái dim" thì click chuột vào textdim đó rồi kéo đi được mà.


  18. @quickandfire : bài #38 bạn không thấy do bài trước đó (37) đã bị ẩn kéo theo một loạt bài sau đó. Lý do bị ẩn là bạn post một đoạn code dài mà không buồn cho vào code tag !

    Cảm ơn anh Ket đã thông báo cho em biết lý do. Không biết có phải lúc đó do Internet chỗ em chập chờn hay thế nào mà lại bị thế chứ em không cố ý làm thế đâu ạ. Vậy bây giờ làm thế nào để em thấy lại được bài số 38 mà anh phamthanhbinh đã post ạ?

×