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

phamthanhbinh

Vip
  • Số lượng nội dung

    5.864
  • Đã tham gia

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

  • Ngày trúng

    182

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


  1. 18 giờ trước, nhunhapro123 đã nói:

    Em có một hình vẽ mặt cắt ngang của hầm như file bên dưới. Nhờ các Anh trên diễn đàn có thể viết chương trình lisp tự động vẽ mặt cắt ngang này không ạ?

    Mat cat ngang ham.dwg

    Hề hề hề,

    Nếu chỉ để vẽ một mặt cắt duy nhất này thì việc sử dụng lisp là điều hơi ngớ ngẩn do bạn tự dựng hìng sẽ nhanh hơn nhiều là người ngồi viết ra lisp.
    Còn nếu để tạo ra nhiều mặt cắt với các kích thước khác nhau do người dùng nhập vào thì bạn cần cung cấp các quan hệ hình học theo một quy luật nào đó vì người viết lisp không phải có thể hiểu hết những đặc thù về chuyên ngành của bạn.


  2. 51 phút trước, thesaintzero đã nói:

    Có ai vào giúp mình với.

    Hề hề hề,

    Chưa hiểu rõ yêu cầu của bạn nên có muốn giúp cũng khó lắm thay.

    1/- Cái thửa 200 được xác dịnh ra sao????

    2/- Layer ranhduan chỉ gồm các polyline xác định ranh giới thửa hay bao gồm cả các đối tượng khác.

    3/- Cái layer PC chỉ thấy có các text chứ không thấy có thủa nào cả.

    4/- Việc tach thửa phân chiết dựa trên nguyên tắc nào???

    5/- Các thông số trong bảng thống kê của bạn lấy ở đâu??? Là cái gì ??? 

    Túm lại là bạn càng kiệm lời càng không nên chờ kết quả.


  3. Vào lúc 1/1/2018 tại 15:59, nttrung111191 đã nói:

     

    Chào toàn thể anh em trên diễn đàn. Bên mình đã viết một vài tiện ích hỗ trợ thiết kế, thi công công trình dạng tuyến, nhất là công trình cầu đường. Tiện ích Pick cắt ngang là một trong số những tiện ích như vậy. Thấy anh em đang trao đổi rất nhiệt tình về tiện ích này, mình xin chia sẻ với anh em tiện ích, link tải tiện ích bên dưới. Hy vọng có thể giúp được anh em bớt thao tác thủ công. Cám ơn anh em đã đọc comment của mình.

     

    Tiện ích Pick cắt ngang

    Hề hề hề, đồ miễn phí có khác ......


  4. 2 phút trước, timmaimotnguoi cho biết:

    Hề Hề Hề

    Kiếm được thầy giỏi cũng khó nhỉ :) bác vui lòng tìm facebook hoặc zalo số này cho e với nhá 0988 705 579 ^^ 

     

    Hề hề hề,

    OK xa lem, thầy dốt thì sẵn , nhưng quan trọng là trò phải giỏi thôi. Trò mà giỏi thì thầy được ăn theo chớ thầy có giỏi cũng chả được cái chi chi đâu......


  5. 10 phút trước, timmaimotnguoi cho biết:

    Bác có riêng cái file help của cad được dịch sang tiếng việt không ạ. giống như excel e cũng có nó dịch sang tiếng việt nên dùng nó dễ hơn e nghĩ hàm cad nó cũng giống hàm của excel thôi

    Hề hề hề,

    Tài liệu tiếng Việt về lisp cũng có nhiều đây chứ. Có điều cần chịu khó tìm trên mạng là ra. Mình vì lười và dốt IT nên cứ đọc trong Help cho nó..... điên nặng thôi mà


  6. 26 phút trước, timmaimotnguoi cho biết:

    Ok e đã làm được thanks bác. (setq k1 (substr k 1 6) k (atoi (substr k 7))) e hiểu cái dòng code này ( k 1 6 ) là nó lấy số cố định từ trái sang phải là 6 số nếu số cố định e dài hơn thì e tăng số 6 đó lên thôi ^^. e vẫn hiểu được bản chất nhưng dùng hàm thì e ko hiểu các hàm ấy lắm :( muốn học mà khó quá ko biết bắt đầu từ đâu đi nhờ mãi cũng ngại

    Hề hề hề,

    Để hiểu các hàm, bạn cần có một chút tiếng ANh, sau đó chui vào Help của CAD để đọc rồi ứng dụng thử là vỡ ào ào, Hơn lũ miền trung ấy chứ. Hãy cố lên, Học được mà.


  7. 20 phút trước, timmaimotnguoi cho biết:

    Cảm ơn Bác quan tâm. Mới đầu học mà gặp đúng cái bài khó quá :(

    Bác cho e cái lisp hoàn chỉnh để e nghiên cứu được không ạ. Đọc thì cũng hiểu bản chất nhưng viết được lại khó quá tại e mới tập tành tìm hiểu chưa sâu lắm

    Hề hề hề,

    Bạn lưu ý rằng nếu chuỗi nhập khác thì việc tách chuỗi cũng sẽ khác. Do vậy bạn nên tìm hiểu kỹ về các hàm tách chuỗi này


  8. 3 phút trước, timmaimotnguoi cho biết:

    Cảm ơn Bác quan tâm. Mới đầu học mà gặp đúng cái bài khó quá :(

    Bác cho e cái lisp hoàn chỉnh để e nghiên cứu được không ạ. Đọc thì cũng hiểu bản chất nhưng viết được lại khó quá tại e mới tập tành tìm hiểu chưa sâu lắm

    Hề hề hề,

    Bước 1 chắc bạn OK rồi .

    Bước 2 : tách chuỗi. Giả tỷ chuỗi của bạn nhập y như ví dụ bạn sẽ có biến k lúc này là BV-HC-02

    Bạn viết các hàm tách chuỗi sau:

    (setq k1 (substr k 1 6) k (atoi (substr k 7)))

    Như vậy bạn sẽ có biến k1 là chuỗi BV-HC- và biến k là số 2

    Bước 3: Bạn thay (cons 1 (itoa  (+ j k 1))) bằng (cons 1 (strcat  k1 (if (> (+ j k 1) 9) (itoa  (+ j k 1)) (strcat "0" (itoa (+ j k 1))))))

     

    Bạn làm thử coi sao nhé.


  9. 2 phút trước, timmaimotnguoi cho biết:

    ^^ Ok rồi bác sao nó đơn giản nhỉ chỉ 2 dòng code thành một cái code hay hơn nhiều :)

    1/ Nếu muốn có một text cố định mình tự nhập vào ví dụ: BV-HC-02

    2/ Thì ở đây nó cũng giống như cái code trên nhưng nó chỉ nhảy số BV-HC-02-> BV-HC-03-> BV-HC-04....( nếu nhập BV-HC-03 thì bắt đầu là  BV-HC-04->......)

    Hề hề hề,

    Cái muốn này cũng không khó. Tuy nhiên nó phức tạp vì người viết lisp không thể hiểu hết được các yêu cầu sẽ phát sinh của người dùng lisp. Bởi vậy mình chỉ có thể hướng dẫn bạn làm như sau:

    1/- Thay dòng code (setq k (getint .....)) thành (setq k (getstring " Nhap vao doan text co dinh"))

    Tỷ như đoạn text của bạn là BV-HC-02 thì đoạn text cố định bạn cần là BV-HC-02

    2/-  bạn phải tách chuỗi text cố định trên thành chuỗi  BV-HC- với số k. Việc tách này có thể sử dụng hàm (substr ....) và đặt cho nó thành biến k1, với biến k lúc này phải được chuyển thành giá trị số.

    3/- Thay thế dòng code (cons 1 (itoa  (+ j k 1))) thành (cons 1 (strcat  k1 (itoa  (+ j k 1)))). Ở đây cần lưu ý kiểm tra xem nếu (+ j k 1) <=9 thì phải thêm số 0 phía trước đi

     

    Thực tế chỉ cần như vậy nhưng nếu bạn chưa rành rẽ về lisp thì làm cũng hơi nhọc. bạn nên tìm hiểu thêm một chút để có thể chủ động trong việc sử dụng lisp của mình


  10. 2 giờ trước, timmaimotnguoi cho biết:

    Bác bình có sửa được code trên như vậy ko ạ? nếu được thì cảm ơn bác nhiều ạ.

     

    Hề hề hề,

    Yêu cầu của bạn có thể thực hiện như sau

    1/- Thêm dòng code (setq K (getint "Nhap so bat dau can thiet")) vào đầu lisp, dưới dòng code (defun.....

    2/- Sửa dòng code  (cons 1 (itoa (1+ j))) thành (cons 1 (itoa  (+ j k 1)))

    Bạn hãy tự làm thử coi sao nhé.


  11. Em vừa nhặt được 02 máy bơm nước có thông số kỹ thuật sau:

     

    11837_333_2.png

     

    1/ Làm thế nào để xác định được lưu lượng của bơm???

     

    11837_1111_2.png

     

    Không có nhẽ lưu lượng của bơm Q = (130 - 20) l/1' (lít /phút ???)  ???

     

    P/s: Rất mong được các bác trợ giúp em xác định lưu lượng của 02 bơm nói trên,

    em xin trân trọng cảm ơn và hậu tạ!

     

     

     

    Anh gửi cho em số tài khoản nhé!

    Hề hề hề,

    Chính xác là như vậy tùy thuộc vào cột áp cần dùng. Cột áp cáng nhớn thì lưu lượng cáng nhỏ. Bơm số 1 có lưu lượng 20 lít phút với cột áp cần bơm là 35m và lưu ku7o75ng 100 l/phút với cột áp cần bơm 26 m. Tương tự bơm số 2 với cột áp cần bơm là 12.5 m lưu lượng sẽ là 130 l/phut và với cột áp cần bơm là 32m lưu lượng chỉ còn 20 lit/phút.

    • Vote tăng 1

  12. text để chọn ghi kết quả của em sẽ có dạng D32 HDPE - L100m hoặc D40 HDPE - L120m. Khi chọn đoạn có chiều dài 120,345m thì nó sẽ ghi thành "D32 HDPE - L122m (hoặc D40 HDPE - L122m). Nghĩa là nó chỉ thay đổi số 100 thành 122 thôi. Còn các chữ hoặc số còn lại (D32(hoặc D40) HDPE - L m giữ nguyên).

    Hihi

    Hề hề hề, 

    Đã test cái lisp mình gửi chưa??? Theo mình nếu chỉ có như trên thì cái lisp mình sửa là OK rồi.

    • Vote tăng 1

  13. http://www.cadviet.com/upfiles/7/135455_new_text_document_1.txt

    Em có cái lips ghi độ dài của đoạn thẳng ở trên. Khi click vào 1 đoạn thẳng và 1 text có sẵn nó sẽ ghi ra ví dụ là "D00 HDPE - L40,354M". Trong đó D là đường kính, HDPE là vật liệu, L40.354m là chiều dài đoạn thẳng.

    Giờ em muốn các bác sửa lại cho em như sau:

    Khi click vào text để nó ghi ra sẽ là text nào đó có sẵn như D32 HDPE - L50M, hoặc D40 HDPE - L60M. Giờ em muốn nó chỉ thay đổi giá trị L60M thành giá trị của đoạn thẳng cần ghi. D32 HDPE hoặc D40 HDPE giữ nguyên. Bình thường nó sẽ có giá trị sau dấu phẩy, em muốn nó làm tròn và cộng thêm 2M nữa. Ví dụ 40,435m sẽ thành 42m, 40,624m sẽ thành 43m

    Hề hề hề,

    Chưa hiểu rõ yêu cầu của bạn lắm. Có phải tất cả các text mà bạn muốn thay thế đều có chữ L hay không??? Trong trường hợp bạn chọn điểm để ghi text chứ không phải thay thế text mới thì sao??? 

    Mình sửa thử như vầy không biết có trúng ý bạn không????

     

    (defun C:TL( / ss L e #h)
     
    (vl-load-com)
     
    (defun Length1(e) (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e)))
     
    (or ans (setq ans 1))
     
    (setq
     
        #h 3
     
        L (strcat ;;;"D00 HDPE - L";;;
     
        ;;; (vl-princ-to-string 
     
       (rtos (+ (* (getvar "dimlfac") (apply '+
     
         (mapcar 'Length1 (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget (list (cons 0 "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")))))))
     
        )) 2) 2 0)" m"
     
        )
     
        ans (cond ((getint (strcat "\nPhuong an nhap ket qua < " (itoa ans) " > :")))(ans))
     
        txtObj (cond     ((= ans 1) (vlax-ename->vla-object (car (entsel "\nChon text ghi ket qua :"))))
     
         (T (vla-addtext (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) L (vlax-3d-point (getpoint "\n Chon diem nhap ket qua" )) #h ))
     
         )
     
    )
     
    (setq nd (vlax-get-property txtobj 'TextString)
     
           k (vl-string-position (ascii "L") nd)
     
           txt1 (cond 
                     ( k (substr nd 1 (1+ k )))
                     (T "")     )
    ) 
     
    (setq L (strcat txt1 L))
     
    (vla-put-TextString txtObj L)
     
    (vla-put-Height txtObj #h)
     
    (princ)
     
    )
     
    
    • Vote tăng 1
×