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

romeo1982

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

    147
  • Đã tham gia

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

  • Ngày trúng

    1

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


  1. Scale thì phải có tâm scale và hệ số tỉ lệ. Hệ số tỉ lệ thì nhập vô rồi, còn tâm scale nằm chổ mô vậy bạn?

    Bạn nói rõ thì mới giúp được. Có lẽ bạn nên upload file .dwg minh hoạ và nói rõ hơn.

    Vậy nhé

    trước hết cám ơn bác đã quan tâm, líp chọn bắt điểm của mổi text là điểm chèn của text đó rùi scale quanh điểm chèn được ko bác đồng thời tìm object bao xung quanh nó (giống như kí hiệu trục vậy) và scale luôn


  2. khổ thân tôi quá, lại gặp 1 vấn đề nữa nhờ mấy cao thủ giúp đỡ : nhờ mấy bác viết dùm em 1 cái lisp như sau

    - nhập lệnh

    - Chọn tất cả text trên màn hìn (kể cả những đường line,poly,spline,tròn.... bao quanh text)

    - nhập hệ số scale- enter

    thì tất cả các text và các hình bao nó tự scale tại chỗ không nhảy tùm lum được ko mấy bác

    @ tại tôi cần scale hàng nghìn cái như thế , cám ơn


  3. Hề hề hề,...

    Vậy là vấn đề sẽ có chút phiền toái hơn do cái việc chọn các text trong vùng chọn. Nó rắc rối như sau:

    1/- Bạn chỉ chọn các đối tượng là text hay cả các Mtext.

    2/- Do vùng chọn không phải chỉ có một text nên việc sắp xếp trật tự các Text này như thế nào cho đúng ý bạn, giữa các Text sẽ là ký hiệu hay dấu hiệu gì???

    3/- Do số lượng Text khác nhau nên độ rộng của cột sẽ chọn ra sao???

    Bạn thử xem xét các vấn đề trên để có hướng giải quyết nhé.

    OH, rất cám ơn bác đã nhắc nhở, thôi thì vầy cho chắc ăn: mình chọn các đối tương text (miễn text là lấy không phân biệt) nha bác, các text nằm trong vùng pick thì xuất ra cùng 1 hàng và cách nhau 1 dấu phẩy( text xuất ra là Dtext), còn độ rộng của cột thì sẽ chạy theo độ rộng của text, cái này cũng không quan trọng lắm vì sau khi làm xong thì mình chỉnh sửa cũng nhanh. Còn 1 cái này nữa mình đang đau đầu là trong bản vẽ này rất là nhìu font: TCVN, .SHX,VNI,.......nói chung là lộn tùng phèo mà mình thì thường xài VNI-AVO, không biết bác có ra tay đổi font trong khung mà mình tạo ra trong bản vẽ luôn được ko.Mong tin bác


  4. Trước hết cám ơn bác đã quan tâm, mình xin lỗi vì đã đánh lộn làm bác ko hiểu, DT là DText đó bác ah, có nghĩa là trong vùng pick có thể có từ 2 text trở lên thì mình lấy luôn 2 text đó, còn text nằm nữa trong nữa ngoài vùng pick thì lấy luôn nha bác. Chúc bác luôn vui khỏe

    Quên, cái cột mới làm sẽ ghi những cái text trong vùng pick


  5. Chào bạn romeo1982,

    Việc bổ sung cột TEN CT vào trong đoạn lisp trên không khó nhưng mình chưa hiểu bạn sẽ dùng cột này làm gì??? Bạn chưa hề cho biết cái bạn sẽ ghi cái gì vào trong cột này khi bạn chọn một vùng cần lấy diện tích.

    Việc bạn nói trong một vùng có hai diện tích nghĩa là sao, mình chưa hiểu vì theo như lisp bạn post thì khi bạn pick điểm vào một vùng kín nào đó lisp sẽ tự tạo ra một boundary duy nhất, và lấy diện tích của vùng được boundary này. Do vậy nó phải là duy nhất chứ sao lại có hai diện tích được???

    Mong bạn trả lời rõ mới có thể giúp bạn được....

    Tốt nhất bạn nên pót một bản vẽ thể hiện cái bạn đã có và cái bạn cần sẽ dễ hiểu hơn bạn ạ.

    Trước hết cám ơn bác đã quan tâm, mình xin lỗi vì đã đánh lộn làm bác ko hiểu, DT là DText đó bác ah, có nghĩa là trong vùng pick có thể có từ 2 text trở lên thì mình lấy luôn 2 text đó, còn text nằm nữa trong nữa ngoài vùng pick thì lấy luôn nha bác. Chúc bác luôn vui khỏe


  6. Nhờ bác nào sửa dùm cái líp này giúp mình với:

     

    (defun c:tdt()

    (setvar "cmdecho" 0)

    (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 0) " >: ")))

    (if tl1 (setq tl tl1))

    (if caot1 (setq h caot1))

     

    (setq k 0

    tdt 0)

    (setq ss (ssadd))

     

    (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 "%%UB¶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)

    (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

    (command "CECOLOR" 4 "-boundary" pt1 "" )

    (setvar "CECOLOR" lacol)

    (setq et (entlast))

    (ssadd et ss)

    (command "area" "e" "last")

    (setq et (entlast))

    (ssadd et ss)

    (setq dtcon (* (getvar "AREA") tl tl))

    (setq tdt (+ dtcon tdt))

    (command "erase" ss "")

     

    (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 dtcon 2 2))

     

    (setq pt1 (getpoint "\n chon mien tinh dien tich tiep theo hoac enter de ket thuc lenh..."))

    );while

    (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)

    (setvar "cmdecho" 1)

    )

     

    Líp xài rất tốt nhưng mình muốn thệm 1 cột nữa ở giữa đặt là TÊN CT, sau khi pick xong tất cả text trong vùng pick sẽ được thể hiện trong cột này .Chú ý là tất cả text đều xài DT, nếu có 2 DT khác nhau trong cùng 1 vùng pick thì để 2 DT ngang nhau đừng nối lại nhé, vì công việc của mình phải thống kê hàng ngàn cái như vậy nên rất mong các cao thủ giúp đỡ, cám ơn


  7. Nhờ mấy bác cái này rất gấp, nhất là bác Tue_NV, mình có cái file như sau:

    http://www.cadviet.com/upfiles/3/goi_cadviet.dwg

    Mấy bác xem dùm trong file này là hatch gì mà khi xài lisp H2P nó tạo ra 1 cái polyline kì cục không theo hatch, tại sao không đổi nó thành region được vậy. Cái này thật sự đang cần giải đáp gấp mong các cao thủ ra tay sớm dùm , cám ơn

    Sao vẫn không thấy ai hết vậy nhỉ


  8. Nhờ mấy bác cái này rất gấp, nhất là bác Tue_NV, mình có cái file như sau:http://www.cadviet.com/upfiles/3/goi_cadviet.dwg

    Mấy bác xem dùm trong file này là hatch gì mà khi xài lisp H2P nó tạo ra 1 cái polyline kì cục không theo hatch, tại sao không đổi nó thành region được vậy. Cái này thật sự đang cần giải đáp gấp mong các cao thủ ra tay sớm dùm , cám ơn

    Sao không thấy ai hết vậy ta, mấy bác dạo này bận lắm chăng.


  9. Nhờ mấy bác cái này rất gấp, nhất là bác Tue_NV, mình có cái file như sau:http://www.cadviet.com/upfiles/3/goi_cadviet.dwg

    Mấy bác xem dùm trong file này là hatch gì mà khi xài lisp H2P nó tạo ra 1 cái polyline kì cục không theo hatch, tại sao không đổi nó thành region được vậy. Cái này thật sự đang cần giải đáp gấp mong các cao thủ ra tay sớm dùm , cám ơn

    BÁC HOÀNH ỚI, HELP ME


  10. Nhờ mấy bác cái này rất gấp, nhất là bác Tue_NV, mình có cái file như sau:

    http://www.cadviet.com/upfiles/3/goi_cadviet.dwg

    Mấy bác xem dùm trong file này là hatch gì mà khi xài lisp H2P nó tạo ra 1 cái polyline kì cục không theo hatch, tại sao không đổi nó thành region được vậy. Cái này thật sự đang cần giải đáp gấp mong các cao thủ ra tay sớm dùm , cám ơn


  11. Mình muốn xin 1 cái líp như sau:

    -Nhập lệnh

    -Đánh tên text cần đổi: VD: đất ( chú ý là khi đánh vào không cần biết là thường hay hoa)

    -Tìm trên bản vẽ tất cả text nào tên đất đều đưa về 1 layer: đất

    (chú ý text có thể là 1 số : vd : 1,25 chẳng hạn.

    Mong các cao thủ giúp đỡ, cám ơn.

    Sao không thấy cao thủ nào ra tay nghĩa hiệp giúp dùm mình


  12. @romeo : Nếu 2 cung tròn có góc ở tâm bằng 180 độ và "dính" với nhau tạo thành 1 đường tròn thì 1 cách đơn giản là sao bạn không sử dụng lệnh Pedit mà nối với nhau tạo thành 1 đường tròn "polyline"?

    Vấn đề là mình đang dùng cái lip của bác gia_bạch:

     

    Nó dò tìm trong các polyline khép kín, nếu trong po nào có 1,2,3... vòng tròn thì nó đưa về 1,2,3.... layẻ riêng. lisp xài rât tốt, nhưng có file cad không hiểu sao ko phải là vòng tròn nữa mà toàn bộ lại bị tách ra làm 2 cung bằng nhau hết nên mình mới xin lisp để nối nó lại vì có tới hàng ngàn cái như vậy, rất tiếc là lisp của bác gia bach chỉ tìm circle thôi chứ ko tìm được vòng tròn bằng po bạn ah, cám ơn

    Bác TUE_NV ơi, sao lâu qué không thấy bác hồi âm, mong tin bác

    • Vote tăng 1

  13. -Mình có một vấn đề này muốn hỏi các bạn. Nhờ mọi nguời viết cho một lisp để biến hình 1 thành hình 2 một cách nhanh chóng nhất. Với cấu trức lisp như sau:

    1.jpg

    + Chọn đuờng thẳng chặt

    + Chọn các đuờng thằng muốn chặt

    + Kết quả cho đuợc ra như hình 2 ( mình thường làm thủ công bằng các break các đường thằng muốn chặt ra rồi sau đó move nó vào)

    -Cám ơn

    bác vào chổ tìm kiếm, đánh vào 'lệnh bf' và từ từ mà thử nhé, nếu chưa vừa ý thì hãy nhờ mấy cao thủ giúp thêm cho

    • Vote tăng 2

  14. Cho minh hoi khi minh copy mot bản vẽ vào một bản vẽ khác mà hệ toa độ không thay đổi.

    vi du: hai bản vẽ thiết kế khác nhau nhưng cung trên một địa hình nhưng muốn chúng khớp nối với nhau(các điểm tọa độ trên bản vẽ này trung tọa độ với các điểm đó trên bản vẽ khác) . đối với cad 14 thi Move rồi nhập tọa độ điểm cần di chuyên là được, còn trên cad 2007 ... thi không làm được. Các đại ca chỉ dum. Cảm ơn trước

    Bạn vào edit, paste to original coordinates


  15. @romeo : Nếu 2 cung tròn có góc ở tâm bằng 180 độ và "dính" với nhau tạo thành 1 đường tròn thì 1 cách đơn giản là sao bạn không sử dụng lệnh Pedit mà nối với nhau tạo thành 1 đường tròn "polyline"?

    Vấn đề là mình đang dùng cái lip của bác gia_bạch:

     

    (defun c:addLay (/ ent i j layname objci objpl pt_lst ss ssc)

    ;| By : Gia Bach, gia_bach @ www.CadViet.com |;

    (vl-load-com)

     

    (defun GetPtLst (obj / anginc arcparam blg delta eparam inc pt ptlst sparam)

    (setq sparam (vlax-curve-getStartParam obj)

    eparam (vlax-curve-getEndParam obj)

    anginc (* pi (/ 6 180.0)))

    (while (<= sparam eparam)

    (setq pt (vlax-curve-getPointAtParam obj sparam))

    (if (not (equal pt (car ptlst) 1e-12))

    (setq ptlst (cons pt ptlst)))

    (if (and (/= sparam eparam)

    (setq blg (abs (vlax-invoke obj 'GetBulge sparam)))

    (/= 0 blg))

    (progn

    (setq delta (* 4 (atan blg)) ;included angle

    inc (/ 1.0 (1+ (fix (/ delta anginc))))

    arcparam (+ sparam inc))

    (while (< arcparam (1+ sparam))

    (setq pt (vlax-curve-getPointAtParam obj arcparam)

    ptlst (cons pt ptlst)

    arcparam (+ inc arcparam)))) )

    (setq sparam (1+ sparam)) )

    ptlst)

    ;main

    (princ "\nChon Pline : ")

    (if (setq ss (ssget '((0 . "LWPOLYLINE"))))

    (progn

    (setq i -1)

    (while (setq ent (ssname ss (setq i (1+ i))))

    (setq objPL (vlax-ename->vla-object ent)

    pt_lst (GetPtLst objPL)

    ssC (ssget "_WP" pt_lst (list (cons 0 "CIRCLE"))) )

    (if ssC

    (progn

    (setq num (sslength ssC))

    (if (> num 255) (setq num (rem num 255)))

    (setq layname (strcat "Layer_" (itoa num) "_Circle") j -1)

    (or (tblsearch "Layer" layname) (vl-cmdf "-layer" "N" layname "c" num layname ""))

    (vla-put-Layer objPL layname)

    (while (setq ent (ssname ssC (setq j (1+ j))))

    (setq objCi (vlax-ename->vla-object ent) )

    (vla-put-Layer objCi layname) ) ) ))))

    (princ))

     

    Nó dò tìm trong các polyline khép kín, nếu trong po nào có 1,2,3... vòng tròn thì nó đưa về 1,2,3.... layẻ riêng. lisp xài rât tốt, nhưng có file cad không hiểu sao ko phải là vòng tròn nữa mà toàn bộ lại bị tách ra làm 2 cung bằng nhau hết nên mình mới xin lisp để nối nó lại vì có tới hàng ngàn cái như vậy, rất tiếc là lisp của bác gia bach chỉ tìm circle thôi chứ ko tìm được vòng tròn bằng po bạn ah, cám ơn


  16. em mới mày mò Cad, mong cac bác chị giúp.

    tại sao em đã load file Lisp rồi,nhưng mỗi khi mở file mới lại phải load lại, mặc dù em đã add vào Startup Suit???

    xin lỗi mình quên chữ Stảup Suit của bạn, trên diễn đàn có 1 số líp sau khi xài thì 1 thời gian phải load lại thôi bạn ah


  17. em mới mày mò Cad, mong cac bác chị giúp.

    tại sao em đã load file Lisp rồi,nhưng mỗi khi mở file mới lại phải load lại, mặc dù em đã add vào Startup Suit???

    Không biết bác xài cad mấy, bác mở cad lên nhấn AP, nhìn xuống bên phài màn hình có chữ CONTENTS, nhấp vào đó chọn add, rồi chọn file líp cần load, chúc bạn thành công

    • Vote tăng 1

  18. Còn vấn đề này "các hình chữ nhật có thể bị nổ ra thành line và có thể bị hở nhỏ nữa" thì pótay !

    Bạn thử LISP này :

    (defun c:addLay (/ ent i j layname objci objpl pt_lst ss ssc)
     ;| By : Gia Bach, gia_bach @  www.CadViet.com             |;  
     (vl-load-com)
    
    (defun GetPtLst (obj / anginc arcparam blg delta eparam inc pt ptlst sparam)
     (setq sparam (vlax-curve-getStartParam obj)
    eparam (vlax-curve-getEndParam obj)
    anginc (* pi (/ 6 180.0)))
     (while (<= sparam eparam)
       (setq pt (vlax-curve-getPointAtParam obj sparam))
       (if (not (equal pt (car ptlst) 1e-12))
         (setq ptlst (cons pt ptlst)))
       (if (and (/= sparam eparam)
          (setq blg (abs (vlax-invoke obj 'GetBulge sparam)))
          (/= 0 blg))
         (progn
    (setq delta (* 4 (atan blg)) ;included angle
          inc (/ 1.0 (1+ (fix (/ delta anginc))))
          arcparam (+ sparam inc))
    (while (< arcparam (1+ sparam))
      (setq pt (vlax-curve-getPointAtParam obj arcparam)
    	ptlst (cons pt ptlst)
    	arcparam (+ inc arcparam))))      )
       (setq sparam (1+ sparam))    )
     ptlst)
    ;main 
     (princ "\nChon Pline : ")
     (if (setq ss (ssget  '((0 . "LWPOLYLINE"))))
       (progn
         (setq i -1)
         (while (setq ent (ssname ss (setq i (1+ i))))
    (setq objPL (vlax-ename->vla-object ent)
          pt_lst (GetPtLst objPL)
          ssC (ssget "_WP" pt_lst (list (cons 0 "CIRCLE"))) )
    (if ssC
      (progn
        (setq num (sslength ssC))
        (if (> num 255) (setq num (rem num 255)))
        (setq layname (strcat "Layer_" (itoa num) "_Circle") j -1)
        (or (tblsearch "Layer" layname) (vl-cmdf "-layer" "N" layname "c" num layname ""))
        (vla-put-Layer objPL layname)
        (while (setq ent (ssname ssC (setq j (1+ j))))
          (setq objCi (vlax-ename->vla-object ent) )
          (vla-put-Layer objCi layname) ) ) ))))
     (princ))

    líp rất hay bác gia_bach ah, bác có thể thêm vào 1 tí nữa ko, trong các đường polyline khép kín có thể ko có vòng tròn mà có text thì nó đưa text và đường polyline về layer có tên text đó luôn, mong tin bác


  19. @romeo1982 : Bạn đã sử dụng chức năng Recreat Boundary trong lệnh Hatchedit (HE) chưa? Nó sẽ đáp ứng yêu cầu của bạn. Hình như CAD2008 trở đi mới có chức năng này.

    Xin lỗi bạn, mình đã thấy chức năng đó rồi, nhưng mình muốn nói là trong bản vẽ của mình có hàng ngàn cái hatch mà ko có đường biên như vậy, nếu làm từ cái chắc là lâu lắm, mong bạn giúp đỡ thêm


  20. Mình có 1 vấn đề như vầy mong các bác giúp đỡ: thường thì mình có các hình khép kín xong thì mình mới hatch, nhưng mà nếu mình lỡ làm mất cái hình khép kín rồi chỉ còn hatch thôi thì có cách nào tìm lại được cái hình đó:hình khép kính có thể là hình tròn, polyline khép kín, line khép kín, spline khép kín........

    Mong các cao thủ giúp đỡ sớm, cám ơn

×