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

bach1212

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

    193
  • Đã tham gia

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

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


  1. Hi , ai có chi tiết cấu tạo hố ga giao cắt nước mưa , nước thải với ống nước mưa D600, D800,D1000,D1200 , còn ống nước thải D300,D400 , cho mình xin file nha . Cám ơn nhiều .Vì mình không biết hố ga giao cắt phải được mở rộng ra bao nhiêu thì vừa ? Giúp mình nhé .

    Bạn dùng tạm cái D600 này xem: http://www.cadviet.com/upfiles/3/40304_gatnm.rar.

    Với D800 thì kích thước lòng hố ga có thể cho là 1.2m; D1000 thì 1.5m.....vv....vv


  2. Bình thường lệnh Ctrl+Shift+C = quét đối tượng + (Ctrl+Shift+C) + Chọn điểm

    Nhưng nay máy e thỉnh thoảng bị lỗi phải chuyển về phương pháp khó chịu: (Ctrl+Shift+C) + Chọn điểm + quét đối tượng. Lại phải làm ngược đời như thế này.

    Không biết đây là loại virut gì? Có cách nào sửa lỗi này không ah?

    Mọi lần e đều phải cài lại cad....mất công quá


  3. Hình như tôi sửa thiếu 1 dòng.

    1). Bạn sửa thêm dòng này xem sao:

    (command ".text" dinh "" "" tendinh "")

    Thành

    (command ".text" dinh "" tendinh)

    2). Bạn ở đâu? Bao cafe thì bao luôn vé máy bay nhé?

    Oki, lisp đã hoàn chỉnh, ae giao thông có thể dùng thoải mái roài. Hí hí e ở Bắc Ninh bác ah. Thank sờ kiu bác nhều :D

    ;; free lisp from cadviet.com
    ;;; this lisp was downloaded from
    http://www.cadviet.com/forum/index.php?showtopic=47442&pid=196992&st=0entry196992
    ;; free lisp from cadviet.com
    ;;; this lisp was downloaded from
    http://www.cadviet.com/forum/index.php?showtopic=47442&pid=196822&st=0entry196822
    ;Khëi t¹o mét sè th«ng sè cho vÏ nót
    ;------------------------------------------------------
    (defun C:knut ()
    (setq hf (getreal "\nChieu cao text: "))
    (command "dimstyle" "s" "Dimn" "dimstyle" "s" "Dran")
    (command "-Style" "hoatfon" "hoatfon" hf "" "" "" "" "")
    (command "-Layer" "n" "Text" "c" "4" "Text" "")
    (command "-Layer" "n" "Dim" "c" "1" "DIm" "")
    (command "-Layer" "n" "Khuat" "c" "4" "Khuat" "l" "Dashed" "Khuat" "")
    (Princ)
    )
    ;;;Chuong trinh chinh (Ve va thong ke cac yeu to cua duong cong)
    (setq tlv (getint "\nNhap ty le ban ve nut 1/... :"))
    (defun c:GN ()
    (setq cmd (getvar "cmdecho"))
    (setvar "cmdecho" 0)
    (setq sttdinh (getint "\nNhap so thu tu dinh :"))
    (setq es (entsel "\nChon cung tron can ve:"))
    (setq dbang (getpoint "\nChon vi tri dat bang thong ke:"))
    (setq osm (getvar "osmode"))
    (setvar "osmode" 0)
    (setq tdt (car es)
      dra (cadr es)
      ent (entget tdt)
      cen (cdr (assoc 10 ent))
      goc1 (cdr (assoc 50 ent))
      goc2 (cdr (assoc 51 ent))
      bk (cdr (assoc 40 ent))
    )
    (setq td1 (polar cen goc1 bk)
      td2 (polar cen goc2 bk)
    )
    (setq mid (list (/ (+ (car td1) (car td2)) 2) (/ (+ (cadr td1) (cadr td2)) 2) (caddr td1)))
    (setq goc (angle cen mid))
    (setq goctam (abs (- goc2 goc1)))
    (if (< goctam pi)
    (setq goct goctam)
    (setq goct (- (* 2 pi) goctam))
    )
    (setq dtam (/ bk (cos (/ goct 2))))
    (setq dinh (polar cen goc dtam))
    (setq T (rtos (/ (* (distance dinh td1) tlv) 1000) 2 2)
      P (rtos (/ (* (- dtam bk) tlv) 1000) 2 2)
      K (rtos (/ (* (* goct bk) tlv) 1000) 2 2)
     Ssbk (rtos (/ (* bk tlv) 1000) 2 2)
    )
    (command "-layer" "s" "khuat" "" ".line" td1 dinh td2 "")
    (command "-layer" "s" "DIM" "" "Dimstyle" "" "Dimn")
    (setq kckt (* 2.2 (getvar "dimtxt")) dkt1 (polar td1 goc1 kckt))
    (command "DIMALIGNED" dinh td1 dkt1)
    (setq  dkt2 (polar td2 goc2 kckt))
    (command "DIMALIGNED" dinh td2 dkt2)
    (command "Dimstyle" "" "Dran" "DIMRADIUS" tdt dra "")
    ;VÏ khung thèng kª nut
    ;--------------------------------
    (setq  xb (+ (car dbang) (* 11 (getvar "textsize"))) yb (- (cadr dbang) (* 10.25 (getvar
    "textsize"))) dbang2 (list xb yb (caddr dbang)) odbang (polar dbang (/ (* 3 pi) 4) (/
    (getvar "textsize") 5)) odbang2 (polar dbang2 (- (* 2 pi) (/ pi 4)) (/ (getvar "textsize")
    5)))
    (command ".layer" "s" "text" "" ".rectang" odbang odbang2 ".rectang" dbang dbang2) (command
    "change" "l" "" "p" "c" "1" "")
    ;Xö lý b¶ng thèng kª
    ;-----------------------------
    (setq gockep (angtos (- pi goct) 1 4))
    (setq Kiem1 (substr gockep 2 1) kiem2 (substr gockep 3 1) kiem3 (substr gockep 4 1))
    (cond ((= kiem1 "d") (setq dau (substr gockep 1 1) cuoi (substr gockep 3))) ((= kiem2 "d")
    (setq dau (substr gockep 1 2) cuoi (substr gockep 4))) ((= kiem3 "d") (setq dau (substr
    gockep 1 3) cuoi (substr gockep 5)))
    )
    (setq  gockep (strcat (strcat dau "%%d") cuoi))
    ;----------------------------
    (setq nhan (rtos sttdinh 2 0))
    (setq chugoc (strcat (strcat "A" nhan) (strcat "=" gockep)))
    (setq chubk (strcat (strcat (strcat "R" nhan) (strcat "=" ssbk)) "m"))
    (setq chutt (strcat (strcat (strcat "T" nhan) (strcat "=" T)) "m"))
    (setq  chup (strcat (strcat (strcat "P" nhan) (strcat "=" P)) "m"))
    (setq  chucd (strcat (strcat (strcat "K" nhan) (strcat "=" K)) "m"))
    (setq dong1 (polar dbang (- (* 2 pi) (/ (* 9 pi) 24)) (* 1.75 (getvar "textsize")))
    	dong2 (polar dong1 (+ pi (/ pi 2)) (* 2 (getvar "textsize")))
    	dong3 (polar dong2 (+ pi (/ pi 2)) (* 2 (getvar "textsize")))
    	dong4 (polar dong3 (+ pi (/ pi 2)) (* 2 (getvar "textsize")))
    	dong5 (polar dong4 (+ pi (/ pi 2)) (* 2 (getvar "textsize")))
    )
    (command "-layer" "s" "Text" "" ".text" dong1 "" chugoc ".text" dong2 "" chubk ".text"
    dong3 "" chutt ".text" dong4 "" chup ".text" dong5 "" chucd)
    (setq tendinh (strcat "A" nhan))
    (command ".text" dinh "" tendinh)
    (command "insert" "nut" dinh "" "" "" )
    (setvar "osmode" osm)
    (setvar "cmdecho" cmd) (princ)
    )
    
    


  4. Sửa như vậy xem sao.
     ;; free lisp from cadviet.com ;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=47442&pid=196822&st=0entry196822 ;Khëi t¹o mét sè th«ng sè cho vÏ nót ;------------------------------------------------------ (defun C:knut () (setq hf (getreal "\nChieu cao text: ")) (command "dimstyle" "s" "Dimn" "dimstyle" "s" "Dran") (command "-Style" "hoatfon" "hoatfon" hf "" "" "" "" "") (command "-Layer" "n" "Text" "c" "4" "Text" "") (command "-Layer" "n" "Dim" "c" "1" "DIm" "") (command "-Layer" "n" "Khuat" "c" "4" "Khuat" "l" "Dashed" "Khuat" "") (Princ) ) ;;;Chuong trinh chinh (Ve va thong ke cac yeu to cua duong cong) (setq tlv (getint "\nNhap ty le ban ve nut 1/... :")) (defun c:GN () (setq cmd (getvar "cmdecho")) (setvar "cmdecho" 0) (setq sttdinh (getint "\nNhap so thu tu dinh :")) (setq es (entsel "\nChon cung tron can ve:")) (setq dbang (getpoint "\nChon vi tri dat bang thong ke:")) (setq osm (getvar "osmode")) (setvar "osmode" 0) (setq tdt (car es) dra (cadr es) ent (entget tdt) cen (cdr (assoc 10 ent)) goc1 (cdr (assoc 50 ent)) goc2 (cdr (assoc 51 ent)) bk (cdr (assoc 40 ent)) ) (setq td1 (polar cen goc1 bk) td2 (polar cen goc2 bk) ) (setq mid (list (/ (+ (car td1) (car td2)) 2) (/ (+ (cadr td1) (cadr td2)) 2) (caddr td1))) (setq goc (angle cen mid)) (setq goctam (abs (- goc2 goc1))) (if (< goctam pi) (setq goct goctam) (setq goct (- (* 2 pi) goctam)) ) (setq dtam (/ bk (cos (/ goct 2)))) (setq dinh (polar cen goc dtam)) (setq T (rtos (/ (* (distance dinh td1) tlv) 1000) 2 2) P (rtos (/ (* (- dtam bk) tlv) 1000) 2 2) K (rtos (/ (* (* goct bk) tlv) 1000) 2 2) Ssbk (rtos (/ (* bk tlv) 1000) 2 2) ) (command "-layer" "s" "khuat" "" ".line" td1 dinh td2 "") (command "-layer" "s" "DIM" "" "Dimstyle" "" "Dimn") (setq kckt (* 2.2 (getvar "dimtxt")) dkt1 (polar td1 goc1 kckt)) (command "DIMALIGNED" dinh td1 dkt1) (setq dkt2 (polar td2 goc2 kckt)) (command "DIMALIGNED" dinh td2 dkt2) (command "Dimstyle" "" "Dran" "DIMRADIUS" tdt dra "") ;VÏ khung thèng kª nut ;-------------------------------- (setq xb (+ (car dbang) (* 9 (getvar "textsize"))) yb (- (cadr dbang) (* 10.25 (getvar "textsize"))) dbang2 (list xb yb (caddr dbang)) odbang (polar dbang (/ (* 3 pi) 4) (/ (getvar "textsize") 5)) odbang2 (polar dbang2 (- (* 2 pi) (/ pi 4)) (/ (getvar "textsize") 5))) (command ".layer" "s" "text" "" ".rectang" odbang odbang2 ".rectang" dbang dbang2) (command "change" "l" "" "p" "c" "1" "") ;Xö lý b¶ng thèng kª ;----------------------------- (setq gockep (angtos (- pi goct) 1 4)) (setq Kiem1 (substr gockep 2 1) kiem2 (substr gockep 3 1) kiem3 (substr gockep 4 1)) (cond ((= kiem1 "d") (setq dau (substr gockep 1 1) cuoi (substr gockep 3))) ((= kiem2 "d") (setq dau (substr gockep 1 2) cuoi (substr gockep 4))) ((= kiem3 "d") (setq dau (substr gockep 1 3) cuoi (substr gockep 5))) ) (setq gockep (strcat (strcat dau "%%d") cuoi)) ;---------------------------- (setq nhan (rtos sttdinh 2 0)) (setq chugoc (strcat (strcat "A" nhan) (strcat "=" gockep))) (setq chubk (strcat (strcat (strcat "R" nhan) (strcat "=" ssbk)) "m")) (setq chutt (strcat (strcat (strcat "T" nhan) (strcat "=" T)) "m")) (setq chup (strcat (strcat (strcat "P" nhan) (strcat "=" P)) "m")) (setq chucd (strcat (strcat (strcat "K" nhan) (strcat "=" K)) "m")) (setq dong1 (polar dbang (- (* 2 pi) (/ (* 9 pi) 24)) (* 1.75 (getvar "textsize"))) dong2 (polar dong1 (+ pi (/ pi 2)) (* 2 (getvar "textsize"))) dong3 (polar dong2 (+ pi (/ pi 2)) (* 2 (getvar "textsize"))) dong4 (polar dong3 (+ pi (/ pi 2)) (* 2 (getvar "textsize"))) dong5 (polar dong4 (+ pi (/ pi 2)) (* 2 (getvar "textsize"))) ) (command "-layer" "s" "Text" "" ".text" dong1 "" chugoc ".text" dong2 "" chubk ".text" dong3 "" chutt ".text" dong4 "" chup ".text" dong5 "" chucd) (setq tendinh (strcat "A" nhan)) (command ".text" dinh "" "" tendinh "") (command "insert" "nut" dinh "" "" "" ) (setvar "osmode" osm) (setvar "cmdecho" cmd) (princ) ) 

    iem A điền ở đỉnh của 2 đường gióng này chạy đi đâu không thấy ra í bác Ha ah: Các thông số khác thì đều đã oki

    A.jpg


  5. Chào bác Meohoang,

    Bác thử dùng cái này coi sao nhé.

    Mình bổ sung thêm vào lisp để có thể sử dụng với các loại đường LINE, POLYLINE, và LWPOLYLINE bác ạ.

    Thực ra cái đường 2Dpolyline như bác nêu chính là cái đường LWPOLYLINE mà mình đã làm trong cái lisp cũ. Tuy nhiên với POLYLINE tức là đường 3Dpolyline thì lisp không đúng nữa do với các POLYLINE này sau khi break nó sẽ tạo ra hai đối tượng hoàn toàn mới và cái đối tượng cũ (ename) bị mất đi. Vì thế cái lệnh Pedit của mình không còn đúng nữa.

    Với các line cũng vậy break thì ngon nhưng khi pedit lại phải thay đổ cấu trúc lệnh mới được và sau khi pedit thì các LINE sẽ trở thành LWPOLYLINE.

    Vì thế mình dùng thêm hàm điều kiện để pedit cho từng trường hợp cụ thể. Bác cứ xem thêm trong lisp sẽ hiểu cách mình làm.

    Cách này tuy chưa gọn gàng lắm nhưng có thể dùng được bác ạ.

    Mong bác dùng thử và cho ý kiến để mình rút kinh nghiệm nha.

    (defun c:NBPL()(vl-load-com)(setq oldos (getvar "osmode"))(setvar "osmode" 0)(setq ss (car (entsel "\n Pick chon doi tuong : ")))(Hli ss)(setq po (getpoint "\n Chon diem cat : "));;;(setq ddau (vlax-curve-getstartPoint ss  ));;;(setq dcuoi (vlax-curve-getEndPoint ss ))(if (= (cdr (assoc 0 (entget ss))) "POLYLINE")(progn(Command "break" ss po "@")(setq ent (entlast))(command "undo" "be")(entdel ent )(command "undo" "e")(setq ss (entlast))(command "undo" "1")(Command "Pedit" ss "j" ent "" "")(Hli (entlast))(while po (setq po (getpoint "\n Chon diem cat tiep theo : "));;;(Command "select" ddau dcuoi "");;;(setq ss (ssget "P"))(if (/= po nil)(progn(Command "break" ss po "@")(setq ent (entlast))(command "undo" "be")(entdel ent)(command "undo" "e")(setq ss (entlast))(command "undo" "1")(Command "Pedit" ss "j" ent "" "");;;(sssetfirst ss ss)(Hli ss))))))(if (= (cdr (assoc 0 (entget ss))) "LWPOLYLINE")(progn(Command "break" ss po "@")(setq ent (entlast))(Command "Pedit" ss "j" ent "" "")(Hli ss)(while po (setq po (getpoint "\n Chon diem cat tiep theo : "))(if (/= po nil)(progn(Command "break" ss po "@")(setq ent (entlast))(Command "Pedit" ss "j" ent "" "")(Hli ss))))))(if (= (cdr (assoc 0 (entget ss))) "LINE")(progn(Command "break" ss po "@")(setq ent (entlast))(Command "Pedit" ss "y" "j" ent "" "")(setq ss (entlast))(Hli ss)(while po (setq po (getpoint "\n Chon diem cat tiep theo : "))(if (/= po nil)(progn(Command "break" ss po "@")(setq ent (entlast))(Command "Pedit" ss "j" ent "" "")(Hli ss))))))(setvar "osmode" oldos)(princ));(defun HLI(ent)(sssetfirst (ssadd ent (ssadd)) (ssadd ent (ssadd)))) 

    Chúc bác khỏe và vui.

     

    PS: các loại đường khác như arc , cung elip và spline mình thấy hình như mọi người ít dùng nên cũng chưa nghiên cứu rõ lắm. Nếu bác xét thấy cần thiết thì mình sẽ thử cố tí nữa xem sao. Hề hề hề....

    Giữ bắt điểm trong code này thì cần làm j bác ơi. Chọn pline xong toàn mất bắt điểm thui....


  6. Tức là e có thể sửa code như thế nào đó để khi text xuất ra: có chiều cao text do e định trước, hoặc cho lisp có thêm lựa chọn: cho phép người dùng chọn chiều cao text xuất ra. Hiện tại với bản vẽ tỉ lệ 1/1000, height text xuất ra của lisp là: 0.2.

    Hiện tại e muốn đổi thành 0.5 bác ah.

    Trong 1 bản vẽ khác e lại cần đổi thành 1 thành 2.....nữa chẳng hạn


  7. Lâu không đóng góp gì cho cad việt không biết lisp này minh tìm được có hay hơn và giúp hơn cho bạn không.

    ;Khëi t¹o mét sè th«ng sè cho vÏ nót
    ;------------------------------------------------------
    (defun C:knut ()
    (command "dimstyle" "s" "Dimn" "dimstyle" "s" "Dran")
    (command "-Style" "hoatfon" "hoatfon" "" "" "" "" "" "")
    (command "-Layer" "n" "Text" "c" "4" "Text" "")
    (command "-Layer" "n" "Dim" "c" "1" "DIm" "")
    (command "-Layer" "n" "Khuat" "c" "4" "Khuat" "l" "Dashed" "Khuat" "")
    (Princ)
    )
    ;;;Chuong trinh chinh (Ve va thong ke cac yeu to cua duong cong)
    (setq tlv (getint "\nNhap ty le ban ve nut 1/... :"))
    (defun c:GN ()
    (setq cmd (getvar "cmdecho"))
    (setvar "cmdecho" 0)
    (setq sttdinh (getint "\nNhap so thu tu dinh :"))
    (setq es (entsel "\nChon cung tron can ve:"))
    (setq dbang (getpoint "\nChon vi tri dat bang thong ke:"))
    (setq osm (getvar "osmode"))
    (setvar "osmode" 0)
    (setq tdt (car es)
         dra (cadr es)
         ent (entget tdt)
         cen (cdr (assoc 10 ent))
         goc1 (cdr (assoc 50 ent))
         goc2 (cdr (assoc 51 ent))
         bk (cdr (assoc 40 ent))
    )
    (setq td1 (polar cen goc1 bk)
         td2 (polar cen goc2 bk)
    )
    (setq mid (list (/ (+ (car td1) (car td2)) 2) (/ (+ (cadr td1) (cadr td2)) 2) (caddr td1)))
    (setq goc (angle cen mid))
    (setq goctam (abs (- goc2 goc1)))
    (if (< goctam pi)
       (setq goct goctam)
       (setq goct (- (* 2 pi) goctam))
    )
    (setq dtam (/ bk (cos (/ goct 2))))
    (setq dinh (polar cen goc dtam))
    (setq T (rtos (/ (* (distance dinh td1) tlv) 1000) 2 2)
         P (rtos (/ (* (- dtam bk) tlv) 1000) 2 2)
         K (rtos (/ (* (* goct bk) tlv) 1000) 2 2)
    	Ssbk (rtos (/ (* bk tlv) 1000) 2 2)
    )
    (command "-layer" "s" "khuat" "" ".line" td1 dinh td2 "")
    (command "-layer" "s" "DIM" "" "Dimstyle" "" "Dimn")
    (setq kckt (* 2.2 (getvar "dimtxt")) dkt1 (polar td1 goc1 kckt))
    (command "DIMALIGNED" dinh td1 dkt1)
    (setq  dkt2 (polar td2 goc2 kckt))
    (command "DIMALIGNED" dinh td2 dkt2)
    (command "Dimstyle" "" "Dran" "DIMRADIUS" tdt dra "")
    ;VÏ khung thèng kª nut
    ;--------------------------------
    (setq  xb (+ (car dbang) (* 9 (getvar "textsize"))) yb (- (cadr dbang) (* 10.25 (getvar "textsize"))) dbang2 (list xb yb (caddr dbang)) odbang (polar dbang (/ (* 3 pi) 4) (/ (getvar "textsize") 5)) odbang2 (polar dbang2 (- (* 2 pi) (/ pi 4)) (/ (getvar "textsize") 5)))
    (command ".layer" "s" "text" "" ".rectang" odbang odbang2 ".rectang" dbang dbang2) (command "change" "l" "" "p" "c" "1" "")
    ;Xö lý b¶ng thèng kª
    ;-----------------------------
    (setq gockep (angtos (- pi goct) 1 4))
    (setq Kiem1 (substr gockep 2 1) kiem2 (substr gockep 3 1) kiem3 (substr gockep 4 1))
    (cond ((= kiem1 "d") (setq dau (substr gockep 1 1) cuoi (substr gockep 3))) ((= kiem2 "d") (setq dau (substr gockep 1 2) cuoi (substr gockep 4))) ((= kiem3 "d") (setq dau (substr gockep 1 3) cuoi (substr gockep 5)))
    )
    (setq  gockep (strcat (strcat dau "%%d") cuoi))
    ;----------------------------
    (setq nhan (rtos sttdinh 2 0))
    (setq chugoc (strcat (strcat "A" nhan) (strcat "=" gockep)))
    (setq chubk (strcat (strcat (strcat "R" nhan) (strcat "=" ssbk)) "m"))
    (setq chutt (strcat (strcat (strcat "T" nhan) (strcat "=" T)) "m"))
    (setq  chup (strcat (strcat (strcat "P" nhan) (strcat "=" P)) "m"))
    (setq  chucd (strcat (strcat (strcat "K" nhan) (strcat "=" K)) "m"))
    (setq dong1 (polar dbang (- (* 2 pi) (/ (* 9 pi) 24)) (* 1.75 (getvar "textsize")))
           dong2 (polar dong1 (+ pi (/ pi 2)) (* 2 (getvar "textsize")))
           dong3 (polar dong2 (+ pi (/ pi 2)) (* 2 (getvar "textsize")))
           dong4 (polar dong3 (+ pi (/ pi 2)) (* 2 (getvar "textsize")))
           dong5 (polar dong4 (+ pi (/ pi 2)) (* 2 (getvar "textsize")))
    )
    (command "-layer" "s" "Text" "" ".text" dong1 "" "" chugoc "" ".text" dong2 "" "" chubk "" ".text" dong3 "" "" chutt "" ".text" dong4 "" "" chup "" ".text" dong5 "" "" chucd "")
    (setq tendinh (strcat "A" nhan))
    (command ".text" dinh "" "" tendinh "")
    (command "insert" "nut" dinh "" "" "" )
    (setvar "osmode" osm)
    (setvar "cmdecho" cmd) (princ)
    )

    Các bác cho e hỏi trong code trên chỉnh sửa như thế nào để được chiều cao của text xuất ra và text trong dim được như ý muốn?


  8. Bạn đã thay đúng. Bạn thay TEXT bởi *TEXT để dùng cho mtext luôn xem sao. Tôi test thì ok. Nếu không được nữa thì post bản vẽ lên thôi.

    B400,L30 của e rõ ràng copy từ D400,L30 ra (là text). Thay B vào, nếu không đổi sang *TEXT thì không nhận B400,L30, trong khi nếu là D thì vẫn nhận D400,L30. Lạ thía....

    Cám ơn bác, đổi *TEXT xong, nó nhận em B400,L30 của e roài. :D


  9. ;; free lisp from cadviet.com
    ;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=62723&pid=193865&st=0entry193865
    (defun C:tgr( / entlst dialst)
    (princ "\nChon tat ca doi tuong can thong ke...")
    (setq entlst (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "TEXT") (1 . "B*#*`,L#*")))))))
    (foreach ent entlst
     (setq dialst (cons (atoi (phai_str (trai_str (cdr (assoc 1 (entget ent))) ",") "B")) dialst)))
    (setq dialst (vl-sort dialst '<))
    (foreach dia dialst
     (princ (strcat "\nB" (itoa dia) " = " (rtos (HA dia entlst) 2 2)))
     (princ)))
    (defun HA(dia lstent) ;muon code cua Ketxu. Thanks!
    (apply '+ (mapcar '(lambda(x) (atof (if (wcmatch (acet-dxf 1 (entget x)) (strcat "B" (itoa dia) "`,L*")) (phai_str (acet-dxf 1 (entget x)) ",L") "0"))) entlst)))
    (defun TRAI_STR(str str1) (if (acet-str-find str1 str) (substr str 1 (- (acet-str-find str1 str) 1))))
    (defun PHAI_STR(str str1) (if (TRAI_STR str str1) (substr str (+ 1 (strlen str1) (strlen (TRAI_STR str str1))))))
    
    

    4 chữ D đã được thay = 4 chữ B

    Bác xem sao??


  10. Nhiều khi nói ra thì hơi quê (mà quê thiệt!): tôi rất sợ dùng 3 hàm: vl-string-trim, vl-string-left-trim, vl-string-right-trim, vì cú pháp nó dễ nhầm lẫn.

    Nhân tiện, chơi luôn cái lisp tính chung cho các loại đường kính luôn (cầu mong nó không lỗi!)

    (defun C:HA( / entlst dialst)
    (princ "\nChon tat ca doi tuong can thong ke...")
    (setq entlst (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "TEXT") (1 . "D*#*`,L#*")))))))
    (foreach ent entlst
     (setq dialst (cons (atoi (phai_str (trai_str (cdr (assoc 1 (entget ent))) ",") "D")) dialst)))
    (setq dialst (vl-sort dialst '<))
    (foreach dia dialst
     (princ (strcat "\nD" (itoa dia) " = " (rtos (HA dia entlst) 2 2)))
     (princ)))
    (defun HA(dia lstent)	;muon code cua Ketxu. Thanks!
    (apply '+ (mapcar '(lambda(x) (atof (if (wcmatch (acet-dxf 1 (entget x)) (strcat "D" (itoa dia) "`,L*")) (phai_str (acet-dxf 1 (entget x)) ",L") "0"))) entlst)))
    (defun TRAI_STR(str str1) (if (acet-str-find str1 str) (substr str 1 (- (acet-str-find str1 str) 1))))
    (defun PHAI_STR(str str1) (if (TRAI_STR str str1) (substr str (+ 1 (strlen str1) (strlen (TRAI_STR str str1))))))
    

    E thay tất cả các kí tự "D" trong code của bác thành "B" mà sao nó không nhận đối tượng có dạng tượng tự: D400,L30B400,L30?

    Vì bản vẽ của e cần thống kê cả dạng B400,L30 này nữa. Mong bác chỉ giáo


  11. Bạn chọn hết các đối tượng cần tạo Block ->ấn Ctrl + C (Hoặc Ctrl + Shift + C) -> mang ra 1 góc Ctrl + Shift + V

    Không dùng Ctrl + C (Hoặc Ctrl + Shift + C) và Ctrl + Shift + V, muốn tạo nhanh blog (không cần tên cũng được) chỉ bằng đánh lệnh rồi quét các đối tượng được chọn. Có lệnh nào như thế không ah?

    Blog tạo thành tương tự như cách làm trên, giữ nguyên vị trí cũ, và các đối tượng cũ thì bị xóa đi.


  12. À quên. lúc đầu mình để chọn tạp nham nên phải kiểm tra nó là Hatch hay không, cho vào Filter của ssget rồi thì thôi k kiểm tra nữa, bạn sửa lại như này cho gọn :

    (defun c:ch(/ a c)
    (vl-load-com)
    (if (and
     (ssget (list (cons 0 "HATCH")))
     (setq a (getangle "\nGoc cong them :"))
     (setq c (getreal "\nScale moi :"))
    )
    (vlax-for object (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object)))
      (vla-put-PatternAngle object (+ (vla-get-PatternAngle object) a))
      (vla-put-PatternScale object c)  
    )
    )
    )
    

    Nên kết hợp Fi hoặc Qs để chọn ra Hatch mình cần trước rồi dùng lệnh cũng đc :)

    muốn thể hiện trên dòng nhắc lệnh: Goc cong them thành Goc cong them (Goc hien tai:50) với 50 là con số thể hiện góc xoay hiện tại của hatch đó. Tương tự cho scale Scale moi thành Scale moi (10)

    . Làm thế nào bác nhỉ?


  13. Chỉnh scale hay chỉnh góc bạn :) ?

     

    P/s :

    (defun c:ch(/ a c)
    (vl-load-com)
    (if (and
     (ssget (list (cons 0 "HATCH")))
     (setq a (getangle "\nGoc cong them :"))
     (setq c (getreal "\nScale moi :"))
    )
    (vlax-for object (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object)))
     (if (wcmatch (vla-get-ObjectName object) "AcDbHatch")
      (or
    (vla-put-PatternAngle object (+ (vla-get-PatternAngle object) a))
    (vla-put-PatternScale object c)
      )
     )
    )
    )
    )
    

    Hí hí, chuẩn chuẩn quá............. :P Cả scale và góc cộng trừ thêm đều oki.

    • Vote tăng 1

  14. Dùng lệnh HE -> Chỉnh 1 mẫu Hatch điển hình

    Bạn dùng lệnh MA + kết hợp với 'FI

    Dạ, FI không lọc được các hatch theo góc xoay phải không bác?.

    E có nhiều hatch cùng màu, cùng kiểu, nhưng mỗi hatch có góc xoay khác nhau. Nếu FI rồi MA thì đưa toàn bộ các hatch về cùng scale thì được nhưng về cùng 1 góc hết thì không được rùi bác ah.

    Thanhks các bác, theo cách của bác ketxu thì e chỉnh scale hatch oki roài.(vẫn giữ nguyên được góc xoay riêng của từng hatch)

    Nhưng còn góc xoay, muốn mỗi hatch có góc xoay khác nhau cùng cộng thêm hay trừ đi 1 góc thì làm thế nào các bác nhỉ? Mong tiếp tục được chỉ giáo ah! :D


  15. 1). Lỗi là ở dòng sau khi đã enta và entb, nên khi mới enta xong nó chwa lỗi đâu.

    2). Lấy lisp đã hiệu chỉnh 2 in 1 mà dùng cho thoải mái sở thích!

    ha (atof (cdr (assoc 1 (entget enta))))

    hb (atof (cdr (assoc 1 (entget entb))))

    Chắc là ở 2 thằng này. Vậy bổ sung sao để nhận cái thằng nhập vào ở : entb trong entb (car (entsel "\nChon Text cao do thu 2: ")), bác nhỉ?

    E đang ngâm cứu tí. :D

    @Tue_NV: Like bác phát nè!


  16. 2 trong 1 rồi, link cũ, sửa lúc 10h25'

    Cho e hỏi, cái dòng này: enta (car (entsel "\nChon Text cao do thu 1: ")) thì chọn pick cũng oki mà nhập cũng oki

    Còn cái dòng này: entb (car (entsel "\nChon Text cao do thu 2: ")) Cú pháp giống nhau sao chọn pick thì oki, chọn nhập thì báo lỗi (; error: bad argument type: lentityp nil) ???

    Đây là trong code của lisp lần 1 của bác

     


  17. :D Lisp này bị tụt hậu ở đoạn nhập cao độ rùi nè bác.... Không còn lựa chọn pick vào text trên bản vẽ nữa.

    E thử xào nấu bằng cách copy đoạn code cho phép pick chọn text ở lisp trước thì thấy ở bước chọn text cao độ thứ 2: nếu không pick chọn text mà nhập bằng tay thì lisp báo lỗi:

    Chon Curve can noi suy cao do:

    Chon diem moc thu 1:

    Chon Text cao do thu 1:

    Nhap Text cao do thu 1: 0

    Chon diem moc thu 2:

    Chon Text cao do thu 2:

    Nhap Text cao do thu 2: 20

    ; error: bad argument type: lentityp nil

    Bác lồng ghép 2 trong 1 giúp e lại với ah


  18. Đây bạn!

    ;CadViet.com - Doan Van Ha (07/04/2012)
    ;Noi suy cao do tung diem tren Curve theo 2 Text cao do tai 2 diem bat ky tren Curve.
    (defun C:HA (/ obj pa pb enta entb ha ha len p lenp hp)
    (vl-load-com)
    (command "undo" "be")
    (setq obj (vlax-ename->vla-object (car (entsel "\nChon Curve can noi suy cao do: ")))
      		pa (getpoint "\nChon diem moc thu 1: ")
      		enta (car (entsel "\nChon Text cao do thu 1: "))
      		pb (getpoint "\nChon diem moc thu 2: ")
      		entb (car (entsel "\nChon Text cao do thu 2: "))
      		ha (atof (cdr (assoc 1 (entget enta))))
      		hb (atof (cdr (assoc 1 (entget entb))))
      		len (- (vlax-curve-getDistAtPoint obj pb) (vlax-curve-getDistAtPoint obj pa)))
    (or *sole* (setq *sole* 2))
    (setq sole (getint (strcat "\nSo chu so thap phan <" (itoa *sole*) ">: ")))
    (if (not sole) (setq sole *sole*) (setq *sole* sole))
    (princ "\nLan luot chon cac diem tren Curve can noi suy cao do...")
    (while (setq p (getpoint "\nChon diem: "))
     (setq lenp (- (vlax-curve-getDistAtPoint obj p) (vlax-curve-getDistAtPoint obj pa))
           	hp (+ ha (/ (* (- hb ha) lenp) len)))
     (command "text" "non" p 2 0 (rtos hp 2 sole)))
    (command "undo" "end")
    (princ))
    

    Post bài reply của bác Tue_NV sau bác chậm mấy giây. Của bác chuẩn rùi ah. Hôm nay không ấn LIKE được roài......

    Nhưng E vẫn mong được thế này ah: thể hiện thêm kết quả ở command được không ah?


  19. E chờ cả buổi sáng. hjj

    Bác Tue_NV ơi, còn thiếu yêu cầu này ự:

    2.Chọn cao độ của mốc thứ nhất (Có thể pick vào text có sẵn hoặc nhập tay vào)

    4.Chọn cao độ của mốc thứ hai (Có thể pick vào text có sẵn hoặc nhập tay vào)

    và có thể hiện thêm kết quả ở command được không ah?

    Vì công việc e làm nếu điền text kết quả vào bản vẽ là phải thêm 1 thao tác xóa. Hiện tại text điền kết quả đang có 4 con số sau dấu phẩy đó ah.

    Hjj Mong bác chỉnh sửa thêm giúp e......


  20. "Em thấy lisp này chưa có lựa chọn đó"

    Lisp viết ra là theo y/c của chủ topic, chưa chắc đã phù hợp với y/c của người khác. Vì vậy, nếu bạn cần thì cứ y/c thêm.

    Y/c của bạn có thể làm được!

    Hjj e yêu cầu ở trên rùi ah. Chờ tin bác. :D

    Nhưng đây là topic cũ, không biết có được viết tiếp ở đây lun không.

×