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

dung12789

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

    44
  • Đã tham gia

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

  • Ngày trúng

    1

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


  1. không hiểu sao bản vẽ của mình rất nặng, dù đã dùng lệnh pu, mình xóa hết sạch trên bản vẽ nhưng dung lượng vẫn không đổi. nhờ các cao thủ giúp đỡ.

    thanks alot!

    (không upload len cadviet được nên mình phải up lên mediafire, mong các bạn thông cảm nhé!)

    link down file:http://www.mediafire.com/download.php?ur1l4fi6zlj225s


  2. (defun dxf (code e) (cdr (assoc code (entget e))))
    (defun c:ttt (/ ss e dis dmax)
    (setq ss (ssget '((0 . "DIMENSION"))) dmax 0)
    (repeat (setq i (sslength ss))
     (setq e (ssname ss (setq i (1- i))))
     (setq dis (distance (dxf 13 e) (dxf 14 e)))
     (if (> dis dmax) (setq dmax dis))
    )
    (entmake (list
     (cons 0 "TEXT")
     (cons 10 (getpoint "\nDiem ghi gia tri Dim max"))
     (cons 1 (rtos dmax))
     (cons 40 1000)
      )
    )
    (princ)
    )
    

    thanks pro nhiều nhiều nha! lisp của pro tuyệt vời quá.


  3. Chấm thép bạn nên vẽ bằng Circle rồi Hatch vào trong Circle. Khi Hatch -> bạn đừng Hatch kiểu solid mà hatch kiểu khấ (ANSI..) chẳng hạn. Cho nó dày dày 1 tí là được. Rồi tạo Linetype

     

    Còn nếu không thì bạn có thể dùng Block dynamic mà làm cái này.

    Bạn có thể đọc thêm về chủ đề Block Dynamic trên diễn đàn nhé

    em làm như anh rồi mà sao lúc tạo linetype nó vẫn không được, vì kiểu ansi thi cũng là 1 kiểu hatch. e có thử tạo shape nhưng cũng không được, cuối cùng e xplode cái hatch đó ra rồi tạo shape thì được nhưng cái shape tao ra nhìn rất xấu, nó thế này đây:

    drawing2.jpg

    mong bác giúp e với!


  4. Hàm while của bác không có đặt điều kiện, nên nó cứ lặp cho đến cả khi bác enter. Mà khi đã enter thì bị lỗi => không undo 1 phát được.

    Trong trường hợp bị lỗi, muốn u 1 phát thì phải thêm bước: undo => end, sau đó mới u được.

    Tạm sửa theo code của bác thì như vầy chắc ổn.

    (defun C:LV (/ rb a b c gocab gocbc gocbt bt bs bg)
    (command "undo" "be")
    (setq a (getpoint "\nChon diem dau tien: "))
    (setq rb 10 c T)
    (while (and c (setq b (getpoint a"\nChon diem tiep theo 1: ")))
     (vegiua))
    (command "undo" "end")
    (Princ))
    (defun vegiua ()
    (setq luubatdiem (getvar "osmode"))
    (setvar "osmode" 0)
    (command ".line" a b "")
    (setvar "osmode"luubatdiem)
    (if (setq c (getpoint b"\nChon diem tiep theo 2: "))
    (progn
    (setq luubatdiem (getvar "osmode"))
    (setvar "osmode" 0)
    (setq gocab (angle a B))
    (setq daiab (distance a B))
    (setq bt (polar a gocab (- daiab rb)))
    (setq gocbc (angle b c))
    (setq daibc (distance b c))
    (setq bs (polar b gocbc rb))
    (setq gocbt (angle bt bs))
    (setq bg (polar bt (+ gocbt (/ pi 2)) rb))
    (command ".erase" "last" "")
    (command ".line" a bt "")
    (command ".arc" bt bg bs)
    (setq a bs)
    (setq b c)))
    (setvar "osmode"luubatdiem)
    (Princ))
    

    cái lisp của bác Hà đúng là chuẩn không cần chỉnh. thanks các bác nhiều


  5. Bạn nên vẽ bằng Pline. Chú ý mấy từ tô đậm.

    Trích dẫn:

    Command: pl

    PLINE

    Specify start point: pick điểm

    Current line-width is 0.0000

    Specify next point or [Arc/Halfwidth/Length/Undo/Width]: pick điểm

    Specify next point or [Arc/Close/Halfwidth/Length/Undo/Width]: a

    Specify endpoint of arc or

    [Angle/CEnter/CLose/Direction/Halfwidth/Line/Radius/Second pt/Undo/Width]: ce

    Specify center point of arc: _per to (pick chọn osnap vuông góc)

    Specify endpoint of arc or [Angle/Length]: pick điểm vuông góc với đường thẳng

    Specify endpoint of arc or

    [Angle/CEnter/CLose/Direction/Halfwidth/Line/Radius/Second pt/Undo/Width]: pick điểm

    Specify next point or [Arc/Close/Halfwidth/Length/Undo/Width]: pick điểm

    Tiếp tục...

    THANKS Bác Hà, cách của bác em làm ok rồi nhưng các arc tạo thành lại không đều nhau, cái to cái nhỏ.hehe hay tại em khong biết làm nhỉ!


  6. Hề hề hề,

    Chưa hiểu rõ ý bạn nói tự động xuất hết kết quả ra là sao cả??? Mình đã nói trong bài trước là do chưa biết ý bạn định ghi Text theo kiểu gì nên chỉ lảm tạm như vầy để ban tùy chọn điểm đạt text cũng như chiều cao text mà lị. Nếu bạn muốn nó tự động ghi thì bạn phải cho biết cái quy định ghi text của bạn ra sao chứ.....

    Còn nếu bạn yêu cầu tự động chọn cả đường nghiệm thu cũng không phải quá khó nhưng bạn cần cho biết rõ cái đường nghiệm thu của bạn có thuộc tính gì riêng biệt chứ nếu không lisp có thể chọn nhầm bạn ạ. Việc tự động chọn điểm gốc và cao độ gốc cũng vậy. nếu các bản vẽ của bạn thống nhất về điểm gốc này cũng như cao độ gốc thì mới tự động được bạn ạ.

    Bạn hãy gửi một bản vẽ chuẩn và các yêu cầu tự động như bạn nói mình có thể làm theo cài bản vẽ chuẩn ấy chứ không thể tự động theo các chuẩn lung tung được bạn ạ.

    @ Bác doanvanha: Đúng như bác góp ý. nhưng vì đây là mình xem voi nên cứ làm tạm thế để bạn đó test, sau đó nếu cần thì chỉnh sửa sau một thể bác ạ.

    Thanks bác đã quan tâm, e dùng cái vba của bác redsea_tq thấy ok lắm rồi. hi!


  7. Xin Lỗi bạn vì hôm qua vào rồi nhưng lại phải out ngay nên không nhận được phản hồi của bạn. Mình sẽ gửi cho bạn file đó:

    yêu cầu:

    Load 2 file HL.dvb và HL.lsp lên rồi dùng lệnh HL, chú ý làm theo yêu cầu của dòng command nhé.

    http://www.mediafire...d3svaq9coxkxdm9

    tuyệt vời bác ah! em làm được rồi. thank bác nhiều nhé.

    chúc bác nhiều sức khỏe.

    • Like 1
    • Vote giảm 1

  8. Hề hề hề,

    Redsea_tq đi vắng, bạn dùng thử cái này coi đã ưng ý chưa nhé.

    Mình test thử trên file bản vẽ bạn gửi thì cao độ ra đúng nhưng chiều dài từng khúc trên pline có sai lệch nhất định. Có lẽ là do bạn đã tính toán bằng tay nên sinh ra sai số. Còn mình tin là lisp chạy không sai.

    Do bạn không nói rõ các yêu cầu nên mình tạm thời để bạn tự chọn chiều cao text, vị trí đặt text sao cgo vừa mắt bạn. Nếu bạn có thể xác định vị trí của các text theo một quy luật nào đó thì mình có thể chỉnh sửa điều này.

    Đây chỉ là lisp sơ bộ bước đầu theo ý phỏng đoán của mình về yêu cầu của bạn nên có thể chưa thực sự đạt yêu cầu. muốn hoàn thiện nó bạn cần phải nói rõ hơn các yêu cầu của bạn mới được.

    Rất mong bạn test thử và cho ý kiến.

    (defun c:elale ()
    (vl-load-com)
    (command "undo" "be")
    (setvar "osmode" 0)
    (setvar "cmdecho" 0)
    (setq en (car (entsel "\n Chon pline la duong nghiem thu "))
             plst (acet-geom-vertex-list en)
             pg (getpoint "\n Chon diem goc tinh toan")
             hg (getreal "\n Nhap gia tri cao do goc")
             i 0
             n (length plst)
             h (getreal "\n Nhap chieu cao text")
    )
    (foreach p plst
           (setq elev (+ hg (- (cadr p) (cadr pg))))
           (command "text" (getpoint "\n Chon diem nhap cao do ") h 90 (rtos elev 2 2))
           (if (and (> i 0) (< i n))
               (progn
                     (setq len (distance (nth (1- i) plst) (nth i plst)))
                     (command "text" (getpoint "\n Chon diem nhap chieu dai duong nghiem thu ") h 0 (rtos len 2 2) )
          	)
      	)
      	(setq i (1+ i))
    )
    (command "undo" "e")
    (princ)
    )
    
    

    Chúc bạn vui.

    rất cảm ơn bác về cái lisp của bác, nhưng mà nếu nó tự động xuất ra hết kết quả thì hay biết máy, được như vậy thì cảm ơn bác lắm lắm!

×