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

engineer0405

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

    79
  • Đã tham gia

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

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


  1. Hề hề hề,

    1/- Có nhiều cách, vấn đề là bạn khoái chọn thằng nào vì trên bản vẽ của bạn có rất nhiều line có thể dùng vào việc này. Cái vụ thấy sao sao thì nhiều người thấy lắm bởi cái sao sao của mỗi người thường không giống nhau.

    2/- Cũng có nhiều cách để chọn chiều cao text khác nhau dựa vào chiều cao của một text hay nhiều text chuẩn nào đó. Song vấn đề chính là chọn text nào làm chuẩn lại do người dùng nên người viết lisp chả biết mà ứng dụng. Bạn cần cung cấp cụ thể cái chiều cao text mà bạn muốn lấy mới được.

    3/- Cái này không thay được vì nó là chuẩn của CAD khi sử dụng các phép chọn đối tượng. Tuy nhiên có thể bổ sung các text tiếng Việt vào các thông báo kèm theo. Song điều này chỉ làm hoa mắt người đọc chứ tác dụng chả có boa nhiêu. Vậy thì có nên làm hay không hè???

    4/- Cách viết chữ này chính là sử dụng mã unicode để viết tiếng việt có dấu trong lisp vì ngôn ngữ lisp không có tiếng Việt. Nhưng bạn lưu ý rằng chỉ có các CAD đời cao hơn 2007 mới có khả năng dịch các code này ra tiếng Việt có dấu, Còn các CAD đời thấp hơn e rằng nó sẽ ra cái giống oẳn tà roằn chả biết chống gậy bạn ạ.

    Cũng vì mình đang xài CAD2004 nên chả mặn mà lắm với cái code này nên cũng chả thuộc hết đâu, chỉ là copy và paste cho bạn vui chớ mình thì sẽ xài tiếng Việt không dấu bạn ạ.

    Cái hệ số hao hụt như bạn nhìn thấy chỉ là cái đã được Cad dịch từ code phía trên ra chứ không phải cái phải ghi trong code bạn ạ. tại sao vậy thì cũng như tiếng Anh nó bảo Hello là chào bạn vậy. Cứ thế mà xài, miễn thắc mắc....

    anh giúp em tiếp với ạ

    1.Theo em chỉ lọc những line trong bảng tổng hợp đó thôi ạ

    Còn đường line nào anh thấy hợp lý để chọn điểm góc trên bên trái và góc dưới bên phải thì theo em là 4 đường line bao quanh thì phải(em chỉ nghĩ vậy thôi ạ)

    -Chứ khi mình getpoint p1,p2 để tính điểm chèn theo em thấy bất tiện ạ

    2.text chuẩn chính là những text mình chọn để nhân hệ số đó ạ

    4.Vậy làm sao để dịch ra đc đoạn code vậy anh ( anh bày em với ạ)

    Em cảm ơn anh


  2. Hề hề hề,

    Dùng thử cái ni coi sao hè???

    http://www.cadviet.com/upfiles/3/5194_ghihaohut_1.lsp

    Em cảm ơn anh nhiều ạ

    Đến giờ em vẫn còn có mấy điều thắc mắc

    Anh giải thích giúp em với ạ:

    1. Tọa độ điểm p1,p2 có cách nào dự vào tọa độ các đường line để xác định thay vì getpoint không ạ

    (chứ nếu chọn vậy thì lisp của mình nó gò bó quá,vì khi chọn đối tượng em hay thích chọn thoải mái chứ chọn 2 điểm nó thấy sao sao ấy ạ)

    2. Làm sao khi chèn text lisp có thể lấy chiều cao,layer của mtext mình vừa chọn để tạo mtext thay vì nhwu trên là giá trị cao chữ là 55 ạ

    3.Dùng hàm ssget  thường nó hiện thông báo select object: 

    Vậy làm sao mình có thể thay đổi chữ select object bằng ngôn ngữ của mình ạ

    4.Anh giúp em cách viết chữ H\\U+1EC6 S\\U+1ED0 HAO H\\U+1EE4T với ạ

    (thường thì mình dùng unicode là hệ số hao hụt chứ ạ)

    Em cảm ơn anh ạ


  3. Hề hề hề,

    Vậy là mình đoán sai. Như vậy cái hệ số ấy là bạn cho tùy hứng à???  5% hay 50% cũng được hử???

    Lisp tính toán cộng trừ nhân chia , thậm chí lũy thừa căn số cho một hay nhiều text số với một số bất kỳ thì trên diễn đàn hình như không thiếu. bạn có thể tìm kiếm và lựa lấy cái phù hợp mà dùng chớ viết lại mần chi cho mất công????

    Còn nếu muốn tự mình viết cũng chả khó chi, Để có thể hiển thị tiếng Việt có dấu trên CAD bạn nên sử dụng font arial với mã Unicode là Ok. Dùng các font khác e hơi vất vả.

     

    Hề hề hề,

    Và đây lại là cái đoán mò nữa , trúng hay trật nhờ bạn xem giúp.

    http://www.cadviet.com/upfiles/3/5194_ghihaohut.lsp

    Em cảm ơn anh Phamthanhbinh nhiều ạ

    rất đúng ý em

    nhưng anh giúp rồi thì giúp em thêm cái này với ạ

    thay vì chọn điểm chèn text thì mình chọn góc phải dưới cùng (lisp tính tọa độ điểm đó) là điểm chèn text luôn ạ

    Em cảm ơn anh nhiều.

    chúc anh vui ạ


  4. Hề hề hề.

    Một engineer0405 mà trình bày một yêu cầu của bản thân tới hai lần vẫn bắt người đọc phải đoán mò thì có nhẽ là cái yêu cầu này quá siêu ...... tưởng mất rồi.

    Hãy đọc kỹ lại các bài post của chính mình và hình dung mình là một kỹ sư siêu ..... lười xem có thể hiểu nổ những gì mình đã viết ra không nhé....

    Cái hệ số siêu .... tưởng ấy là hệ số gì vậy??? đượic tinh toán đựa vào dâu khi tỷ trọng của vật liệu không có??? Đoán mò, tra bảng  hay cứ bốc phét vào????

    Nếu cái sự đoán mò mà là đúng thì mình đoán rằng từ cái bảng bạn cho, lisp sẽ phải tự tinh ra trong lượng của vật liệu dựa vào đường kinh và chiều dài đã có cũng như cái tỷ trọng vật liệu tự bịa ra. Sau đó dựa vào con số trọng lượng được ghi trong bảng để tìm ra cái trọng lượng tính toán so với trọng lượng ghi sẵn trong bảng chênh lệch bao nhiêu phần trăm và gọi nó là hệ số hao hụt.

    Nhưng kể cả đoán như vậy thì sẽ xãy ra tình trạng có vài chục loại vật liệu khác nhau với các hệ số hao hụt khác nhau thì bạn sẽ lấy thằng nào mà ghi vào bản vẽ???. Khi đó không nhẽ ngửa mặt lên trời hộc mấy cái rồi lăn đùng ra giãy giãy ư????

    Đừng nghĩ rằng đã là kỹ sư thì nói gì mọi người cũng phải nghe và muốn nói sao mọi người cũng phải tự hiểu mà mần. Nếu nói mà mọi người không hiểu thì sẽ co chuyện bảo người ta làm con bò nò sẽ được con trâu đấy engineer0405 ạ.

    Hề hề hề,

    Nếu không giải thích được rõ những điều trên thì đừng mong có lisp làm gì, hãy tính tay còn nhanh hơn ngồi chờ đó.Bởi vì lisp luôn là con dao hai lưỡi. Dùng mà không hiểu nó thì đứt tay như chơi. Thậm chí nó có thể quay lại thọc vào chính cái rốn người dùng.

    Vài lời nghịch nhĩ, mong engineer0405 suy nghĩ nghiêm túc về những điều này.

    dạ em cảm ơn anh phamthanhbinh đã góp ý cho em ạ

    nhưng hình như anh hiểu sai cái yêu cầu của em rồi ạ

    -cái lisp này ý của em là chỉ căn cứ vào các text đó nhân 1 hệ số thôi ạ

    em có viết đc 1 đoạn sơ sơ mà mò mãi chưa nghĩ ra

    Em cảm ơn anh nhiều ạ


  5. Hề hề hề,

    Cám ơn bạn engineer0405 đã cố gắng trình bày vấn đề của mình khiến cho người đọc chả biết cần phải làm gì.....

    hic

    Cái lisp nó thế này ạ

    Bản vẽ ban đầu không có dòng hệ số hao hụt

    giờ lisp nó phải xét xem những giá trị số và nhân với 1 hệ số sau đó chèn dòng chữ hệ số hao hụt đó ạ


  6. *Đọc dữ liệu từ file txt. Gồm 3 bước:

    -Mở file (hàm open).

    -Đọc dữ liệu từ file (hàm read-line).

    -Đóng file (hàm close)

     

    *Viết dữ liệu vào file txt. Gồm 3 bước:

    -Mở file (hàm open).

    -Viết dữ liệu vào file (hàm write-line).

    -Đóng file (hàm close)

     

    *Hàm Open dùng mở 1 file để đọc hoặc viết dữ liệu vào file. Cú pháp:

    (open tenfile kieumo) trong đó:

    -tenfile: là đường dẩn đầy đủ của file. Ví dụ “D:\\tailieukythuat\\duy.txt”

    -kieumo: là ký tự viết thường “a” “r” “w” dùng xác định kiểu mở file:

    +”a” mở file tenfile để chép dữ liệu nối tiếp vào cuối file. Nếu tìm thấy file con trỏ nằm cuối file, dữ liệu chép vào sẽ nối vào cuối file. Nếu không tìm thấy file tenfile sẽ được tạo mới, con trỏ nằm đầu file.

    +”r” mở file tenfile để đọc dữ liệu. Con trỏ nằm tại vị trí dòng đầu tiên của file. Nếu không tìm thấy file này hàm trả về nil.

    +”w” mở file tenfile để chép dữ liệu vào file này. Nếu tìm thấy dữ liệu trong file sẽ bị chép đè lên. Nếu không tìm thấy file tenfile sẽ được tạo mới, con trỏ nằm đầu file.

     

    *Khi open 1 file bạn cấp cho nó 1 tên đại diện. Nhớ rằng file phải được đóng bằng hàm close trước khi thoát khỏi acad nếu không file có nguy cơ bị văng đi đâu đó không tìm ra.

     

    -Ví dụ mở file C:\\tailieukythuat\\duy.txt viết dòng tailieukythuat.com và đóng file lại như sau:

     

    (setq tenfile (open “C:\\tailieukythuat\\duy.txt” “a”))

    (setq noidungviet “tailieukythuat.com”)

    (write-line noidungviet tenfile)

    (close tenfile)

     

    -Ví dụ mở file C:\\tailieukythuat\\duy.txt đọc dòng dầu tiên và đóng file lại như sau:

     

    (setq tenfile (open “C:\\tailieukythuat\\duy.txt” “r”))

    (setq noidungdoc (read-line tenfile))

    (close tenfile)

     

    -Lưu ý khi thực hiện xong hàm read-line thì con trỏ sẽ nhảy xuống dòng kế tiếp nên muốn đọc nội dung dòng thứ n của file C:\\tailieukythuat\\duy.txt thì mình dùng hàm repeat n lần với dòng (setq noidungdoc (read-line tenfile)). Ví dụ đọc dòng thứ 3 và gán cho biến noidungdoc:

     

    (setq tenfile (open “C:\\tailieukythuat\\duy.txt” “r”))

    (repeat 3

    (setq noidungdoc (read-line tenfile))

    )

    (close tenfile)

    Anh Duy ơi cho em hỏi tý ạ

    Nếu file text nội dung file có dấu tiếng việt thì làm sao mà ghi đc vậy anh


  7. em chào các anh ạ

    các anh viết giúp em cái lisp này với ạ

    b1: chọn những text hoặc mtext chỉ là số (loại trừ phi.....)

    b2.nhân text vừa chọn 1 hệ số với 1 hệ số

    b3:Chèn hệ số mớ nhân vào dưới bảng (hệ số mình nhập)

    ví dụ hệ số hao hụt là 5% (cái này sao em chèn text mãi mà không thể có dấu tiếng việt)

    em cảm ơn các anh ạ

    http://www.mediafire.com/?h9q7ruyuajwqgrx

     


  8. Hi! Chúc mừng gia bach có "đơn hàng" mới.

     

    Trong khi chờ và đợi, engineer0405 có thể nghiên cứu các lệnh tách-nhập bảng của Cad để áp dụng cho t/hợp của mình.

    Cụ thể là : 

    - tạo bảng  (KTN) gồm kc 01-05 và kc 11-20

    - tạo bảng (KTD) gồm kc 06-10

    sau đó dùng các lệnh edit bảng để chèn các dòng của bảng kc06-10 vào trước dòng kc06 của bảng đầu.

    em cảm ơn anh HoaVien nhiều ạ

    Để em thử xem ạ


  9.  

    Sorry!

    Dạo này "lười" quá, chả muốn "viết lách" gì cả.

    Chờ vài ngày nha.

     

    PS: Có cần bổ sung chức năng gì thì "yêu cầu" luôn.

    Em có ý kiến thế này ạ

    Nếu sai thì mong anh bỏ qua nha

    Theo em thì anh đã giúp mọi người thì nên cho dùng luôn ạ

    Còn nếu sợ ko nhớ tác giả thì sao mỗi lần thực hiện lệnh xong là hiện tên tác giả đc anh ạ

    Theo em là vậy

    Em có ý kiến vậy thôi ạ

    Nếu đc thì móng anh giúp cho ạ

    Em cảm ơn anh


  10. em chào các anh ạ

    em mới dùng speedcad nhưng em thấy vướng vấn đề này

    có gì mong các anh giải đáp giúp emvới:

    1. những thanh thép dài hơn 11.7 thì speedcad tính d nối kiểu gì (em tìm mãi mà ko thấy)

    2.có lisp nào để thay đổi nhanh số thứ tự thanh thép và số cấu kiên thanh thép ko ạ 

    mong các anh giúp em với

    em cảm ơn các anh

    • Vote giảm 1

  11. em chào các anh ạ

    em có 1 lisp như thế này ạ

    (defun c:eb (/ blk)
       ;;;---------------------------------------------------------------------;;;
       ;;;A rewrite of the entsel function.					  ;;;
       ;;;---------------------------------------------------------------------;;;
         (defun ent_sel (msg / ent)
       	(while (not ent)
       	  (cond ((setq ent (entsel msg)))
       		((= (getvar "ErrNo") 7)
       		 (princ "\nSelection missed.  Please try again.")
       		)
       		((= (getvar "ErrNo") 52) (exit))
       	  )
       	)
       	ent
         )
       ;;;
       ;;;
       ;;;
         (while (not blk)
       	(setq blk (car (ent_sel "\nSelect Block:  ")))
         )
         (mapcar '(lambda (x)
       		 (and
       		   (vlax-property-available-p x 'explodable)
       		   (eq (vlax-get-property x 'explodable) :vlax-false)
       		   (not (vlax-put-property x 'explodable :vlax-true))
       		   (princ "\nThe selected Block is now Explodable!  ")
       		 )
       	   )
       	  (list
       		(vla-item (vla-get-blocks
       			(vla-get-activedocument (vlax-get-acad-object))
       			  )
       			  (cdr (assoc 2 (entget blk)))
       		)
       	  )
         )
         (princ)
       )
    

    nhưng phần chọn ban đầu em chưa thấy hợp lý lắm (chỉ chọn đc từng block 1)

    mong các anh chỉnh giúp em với

    -Phần chọn đối tượng:

    b1:chọn đối tượng(đoạn này mình chọn tất cả ( gồm line, text, block,....)

    b2:lọc các đối tượng mình vừa chọn chỉ giữ lại các block

    b3:thực hiện lệnh

    b4:kết thúc 

    mong các anh hoàn chỉnh giúp em 2 bước đầu với ạ

    em cảm ơn các anh

    (defun c:eb (/ blk)
       ;;;---------------------------------------------------------------------;;;
       ;;;A rewrite of the entsel function.  ;;;
       ;;;---------------------------------------------------------------------;;;
         (defun ent_sel (msg / ent)
        (while (not ent)
         (cond ((setq ent (entsel msg)))
        ((= (getvar "ErrNo") 7)
        (princ "\nSelection missed.  Please try again.")
        )
        ((= (getvar "ErrNo") 52) (exit))
         )
        )
        ent
         )
       ;;;
       ;;;
       ;;;
         (while (not blk)
        (setq blk (car (ent_sel "\nSelect Block:  ")))
         )
         (mapcar '(lambda (x)
        (and
          (vlax-property-available-p x 'explodable)
          (eq (vlax-get-property x 'explodable) :vlax-false)
          (not (vlax-put-property x 'explodable :vlax-true))
          (princ "\nThe selected Block is now Explodable!  ")
        )
          )
         (list
        (vla-item (vla-get-blocks
        (vla-get-activedocument (vlax-get-acad-object))
         )
         (cdr (assoc 2 (entget blk)))
        )
         )
         )
         (princ)
       )
    (defun c:eb (/ blk)
       ;;;---------------------------------------------------------------------;;;
       ;;;A rewrite of the entsel function.  ;;;
       ;;;---------------------------------------------------------------------;;;
         (defun ent_sel (msg / ent)
        (while (not ent)
         (cond ((setq ent (entsel msg)))
        ((= (getvar "ErrNo") 7)
        (princ "\nSelection missed.  Please try again.")
        )
        ((= (getvar "ErrNo") 52) (exit))
         )
        )
        ent
         )
       ;;;
       ;;;
       ;;;
         (while (not blk)
        (setq blk (car (ent_sel "\nSelect Block:  ")))
         )
         (mapcar '(lambda (x)
        (and
          (vlax-property-available-p x 'explodable)
          (eq (vlax-get-property x 'explodable) :vlax-false)
          (not (vlax-put-property x 'explodable :vlax-true))
          (princ "\nThe selected Block is now Explodable!  ")
        )
          )
         (list
        (vla-item (vla-get-blocks
        (vla-get-activedocument (vlax-get-acad-object))
         )
         (cdr (assoc 2 (entget blk)))
        )
         )
         )
         (princ)
       )
    (defun c:eb (/ blk)
       ;;;---------------------------------------------------------------------;;;
       ;;;A rewrite of the entsel function.  ;;;
       ;;;---------------------------------------------------------------------;;;
         (defun ent_sel (msg / ent)
        (while (not ent)
         (cond ((setq ent (entsel msg)))
        ((= (getvar "ErrNo") 7)
        (princ "\nSelection missed.  Please try again.")
        )
        ((= (getvar "ErrNo") 52) (exit))
         )
        )
        ent
         )
       ;;;
       ;;;
       ;;;
         (while (not blk)
        (setq blk (car (ent_sel "\nSelect Block:  ")))
         )
         (mapcar '(lambda (x)
        (and
          (vlax-property-available-p x 'explodable)
          (eq (vlax-get-property x 'explodable) :vlax-false)
          (not (vlax-put-property x 'explodable :vlax-true))
          (princ "\nThe selected Block is now Explodable!  ")
        )
          )
         (list
        (vla-item (vla-get-blocks
        (vla-get-activedocument (vlax-get-acad-object))
         )
         (cdr (assoc 2 (entget blk)))
        )
         )
         )
         (princ)
       )

  12. Để Tue_NV giải quyết vụ này luôn

    Tên lệnh là SCK :

    http://www.cadviet.com/upfiles/SCK.vlx

    Đây là Chương trình của Anh Võ Thành Nghĩa ở Đà Nẵng chưa có tính năng đánh số cấu kiện cho thanh thép

    Nay Tue_NV viết Lisp bổ sung thêm tính năng đánh số Cấu Kiện cho thép

    tên lệnh SCK sẽ giải quyết vấn đề này

    s_dead.gif

    anh Tue ơi

    cho em xin lisp này với ạ

    em thấy hay mà link lỗi rồi ạ

    em cảm ơn anh


  13. Thanks ketxu. Một ý kiến hay.

    Nhân đây mình post thêm version mới của Lisp chia Viewport. Sơ qua về Lisp mới này:

    1. Cắt viewport theo phương ngang (nếu chọn điểm chia nằm trên cạnh ngang)

    2. Cắt theo phương thẳng đứng (nếu chọn điểm chia nằm trên cạnh đứng)

    3. Cắt viewport thành 4 viewport nếu chọn điểm cắt không thỏa mãn cả 2 điều kiện trên.

    4. Có thể mở rộng viewport bằng cách chọn điểm cắt nằm ngoài khung viewport gốc.

    Tất cả đều dùng chung 1 lệnh là CVP và kết quả sẽ ra 2 hoặc 4 viewport tùy thuộc vào vị trí chọn điểm chia. Lisp này thỏa mãn được nhiều nhu cầu chia khác nhau tuy nhiên cách chọn điểm cắt sẽ phải chính xác hơn Lisp #2. Các bạn xem hình minh họa dưới đây rồi Test thử xem có lỗi gì không. Thanks

    
    

    cảm ơn anh KangKung ạ:

    em có ý kiến này anh có thể bổ sung vào lisp không ạ

    1. vấn đề layer vẽ khung view port thì khi mình chia xong vẫn lấy layer của khung cũ chứ không phải chọn sang layer khác

    2.lock tất cả các viewport đc chia sau khi chia xong

    anh giúp luôn ạ

    em cảm ơn anh

    p/s: à anh KangKung có mail không cho em xin với

    em có mấy vấn đề vướng

    hi vọng anh có thể giúp em

×