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

info

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

    12
  • Đã tham gia

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

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


  1. Hề hề hề,

    Cái ông chủ thớt này chắc bán sạp rồi. Kêu như vạc, vậy mà sau khi được giúp, chả thấy í ới gì nữa. Không hiểu cái thớt này có còn nên treo nữa không hè????

    http://www.cadviet.com/upfiles/3/3942_vhhmd.lsp

     

    hì thanks bác Phamthanhbinh không theo dõi em cặm cuội vẽ tay mấy bữa nay xong hết rồi :(, để dành sữ dụng lần sau vậy

    Em test rồi chương trình chạy tốt lắm.

    Em có chỉnh lại theo nhu cầu của em, bác nào cũng phải làm những việc không giống ai như em thì dùng.

    mẫu số liệu, mẫu bảng vẽ đính kèm theo

    http://www.cadviet.com/upfiles/3/3942_solieu_hhcb.txt

     

    http://www.cadviet.com/upfiles/3/3942_km2__km49500.dwg

     

    P/s: chương trình chỉ chạy tốt khi tạo linetype và textstyle trước

     

    Thanks bác


  2. Hề hề hề,

    Chả hiểu anh bạn này học trường nào ra, nhưng ngó bộ chửa hiểu gì về việc mình làm cả.

    Cái mình muốn mà cũng không trình bày cho rành rọt và chính xác được thì thật là.....

    1/-  Có chắc là tất cả các chỗ hư hỏng trên mặt đường đều vẽ thành hình chữ nhật cả hay không??? Tỷ như cái mép đường nó là một khúc cong thì vẽ kiểu gì???

    2/- Cái vụ : ghi text (định dạng center để có chỉnh theo tỷ lệ cũng ko bị nhảy khỏi vị trí nhiều) vào phía dưới  và trên nếu ở nữa mặt bên kia.

    là ghi text chi vậy??? Text chỉ giá trị lý trình thì lấy mốc là điểm nào vậy??? Trong trường hợp đường không thẳng thì cái lý trình này được lấy theo mép đường phía nào??? hay lấy theo tim đường???

    3/- Cái vụ : Cứ để mặt định trong lisp là 7  

    Nghĩa là chi vậy??? Phải chăng bạn muốn nói là mặc định (chứ không phải là mặt định đâu nhé) chiều rộng mặt đường là 7 mét.

    4/- Chiều rộng và chiều dài chỗ hư hỏng ghi kiểu nớ có đúng kỹ thuật và dễ hiểu cho người đọc bản vẽ không hè???

    5/- Cái : trình hạng chế       

    Là cái hạng gì vậy?? Hạng gà, hạng ruồi hay hạng nặng hạng trung.....?

     

    Túm lại là nếu bạn còn muốn có sự trợ giúp thì cần nghiêm túc hơn với việc post bài của mình. Cần nói đúng, chính xác và đầy đủ tất cả những điều có liên quan tới vấn đề của bạn. Có vậy người khác mới có thể hiểu và giúp bạn theo đúng ý của bạn được.

    Mong bạn lưu tâm.

    Anh xem qua bản vẽ để hiểu ý em hơn

    1/ Đây là bình đồ duỗi thẳng, nên hư hỏng trên đường đều được cắt vuông thành sắc cạnh để dễ thi công bảo dưỡng

    2/ Text ghi lý trình theo như bản vẽ

    3/ Để mặt định bề rộng đường vì ghi text có thể bên trái hoặc bên phải (biến cách mép > 3.5m thì ghi text bên trái còn < thì ghi bên phải)

    4/ Cái này em cũng chưa biết trình bày sao, nếu được ghi vào tâm hình chữ nhật dạng {dài x rộng m}

     

    Có gì mong mọi người chỉ bảo thêm.


  3. Chào mọi người em có một vấn đề xin nhờ mọi người giúp đỡ.

    Em làm thống kê hư  hỏng mặt đường, cần viết lisp theo yêu cầu lấy số liệu từ txt và vẽ trên cad. File số liệu có dạng :

    điểm đầu<tab>điểm cuối<tab>cách mép<tab>bề rộng<tab>loại hư  hỏng

     

    20        25        1          2          1

    30        40        4          2          2

    70        75        1.5       1.5       1

     

    Yêu cầu : như bản vẽ

    -         vẽ hình chữ nhật dựa trên điểm đầu điểm cuối bề rộng và cách mép bao nhiêu

    -         hatch hình chữ nhật vừa vẽ theo loại hư hỏng nếu loại 1 thì hatch khác loại 2

    -         ghi text lý trình như bản vẽ đính kèm

    -         ghi text chiều rộng và chiều dài chữ nhật

     

    Em chỉnh theo lisp trên diễn đàn rồi mà chưa được, trình độ hạng chế nên nhờ mọi người viết để học hỏi thêm.

    Em cảm ơn!!

    file bản vẽ:

    http://www.cadviet.com/upfiles/3/3942_sscb_mat_duong.dwg


  4. Có phải bạn muốn thế này:

    (defun c:tinh (/ ss ent sobitru sotru sobichia sochia ssle1 kqua)

    (vl-load-com)

     

    (initget "+ - * /")

    (setq ptinh1 (getkword "Chon phep tinh <+ - * />: "))

     

    (if ptinh1

    (setq ptinh ptinh1)

    )

     

    (cond ((= ptinh "+")

    ;;; cong

    (prompt "\nChon text de cong:")

    (setq ss (ssget '((0 . "TEXT")))

    kqua 0

    )

    (while (and ss (> (sslength ss) 0))

    (setq kqua

    (+ kqua

    (atof (cdr (assoc 1 (entget (setq ent (ssname ss 0))))))

    )

    )

    (ssdel ent ss)

    )

    (princ kqua)

    )

     

    ((= ptinh "*")

    ;;;nhan

    (prompt "\nChon text de nhan:")

    (setq ss (ssget '((0 . "TEXT")))

    kqua 1

    )

    (while (and ss (> (sslength ss) 0))

    (setq kqua

    (* kqua

    (atof (cdr (assoc 1 (entget (setq ent (ssname ss 0))))))

    )

    )

    (ssdel ent ss)

    )

    (princ kqua)

    )

     

    ((= ptinh "-")

    ;;;tru

    (setq sobitru (car (entsel "\nChon so bi tru:"))

    sotru (car (entsel "\nChon so tru:\n"))

    kqua (- (atof (cdr (assoc 1 (entget sobitru))))

    (atof (cdr (assoc 1 (entget sotru))))

    )

    )

    (princ kqua)

    )

     

    ((= ptinh "/")

    ;;;chia

    (setq sobichia (car (entsel "\nChon so bi chia:"))

    sochia (car (entsel "\nChon so chia:\n"))

    kqua (/ (atof (cdr (assoc 1 (entget sobichia))))

    (atof (cdr (assoc 1 (entget sochia))))

    )

    )

    (princ kqua)

    )

    )

    (if (not ssle)

    (setq ssle 0)

    )

    (setq obj (vlax-ename->vla-object

    (car (entsel "\nChon text de ghi ket qua:"))

    )

    ssle1 (getint (strcat "\nSo so le <" (itoa ssle) ">: "))

    )

    (if ssle1

    (setq ssle ssle1)

    )

    (vla-put-TextString obj (rtos kqua 2 ssle))

     

    (princ)

    )

    Không biết tác giả có ý đồ gì lại dùng tất cả biến toàn cục?!

    cảm ơn Chiron cái lisp này đúng ý của mình rồi đấy.

    lisp này mình down trên mạng về nên ko cũng không biết ý đồ của tác giả 

     

    p/s: chắc phải học thêm về các định nghĩa biến, e cũng cố gắng sửa mà ko hiểu bản chất nên ko được


  5. Hề hề hề,

    Bạn thử tự làm xem sao nhé.

    Thêm dòng code:

    (if (= ptinh nil)

    vào phía trên dòng code:

    (setq ptinh (getkword "Chon phep tinh <+ - * />: "))

    Và Thêm một dấu ngoặc đóng ) vào dưới dòng code nói trên.

     

    Chúc thành công.

    Cảm ơn anh phamthanhbinh đã trả lời giúp

    theo như code a giúp thêm vào thì có nghĩa là nếu biến "ptinh" còn chưa có giá trị sẽ có lựa chọn còn nếu có  giá trị rồi sẽ ko còn lựa chọn được

     

    nhưng e muốn là biến "ptinh" có giá trị rồi những vẫn cho lựa chọn, nếu enter sẽ bỏ qua và lấy lựa chọn trước đó

     

     giống như trong câu lệnh lựa chọn "So so le <2>:" nếu mình chọn là 2 thì lần sau chỉ cần enter là sẽ nhận là số cũ hoặc có thể nhập lại số khác

     

     

     (if (not ssle) (setq ssle 0))
      (setq obj (vlax-ename->vla-object (car (entsel "\nChon text de ghi ket qua:")))
            ssle1 (getint (strcat "\nSo so le <" (itoa ssle) ">: ")))
      (if ssle1 (setq ssle ssle1))
     
    Cảm ơn và chúc anh sức khỏe!
    • Vote tăng 1

  6. Nhờ mọi người chỉnh sửa giúp lisp tính toán này với ạ.

    mình muốn sau khi tính toán với một phép tính nào đó lần đầu thì lần gõ lệnh tính tiếp theo nó sẽ cho lựa chọn là enter để tính phép tính đó hoặc là nhập + - * /  để tính phép tính khác

     

    ví dụ : gõ lệnh "tinh" và gõ "+" để tính phép tính cộng

    sau khi tính xong mình gõ lệnh "tinh" tiếp sẽ ra "Chon phep tinh <+ - * />: " nếu enter sẽ tính tiếp phép tính cộng còn nhập vào "*" sẽ tính phép tính nhân

    Mong mọi người giúp đỡ. Cảm ơn!

     

    (defun c:tinh()
      (vl-load-com)
      (initget 1 "+ - * /")
     
    (setq ptinh (getkword "Chon phep tinh <+ - * />: "))
     
      (cond ((= ptinh "+")  ;;; cong
         (prompt "\nChon text de cong:")
         (setq ss (ssget '((0 . "TEXT")))
               kqua 0)
         (while (and ss (> (sslength ss) 0))
           (setq kqua (+ kqua (atof (cdr (assoc 1 (entget (setq ent (ssname ss 0))))))))
           (ssdel ent ss))
         (princ kqua))
        
        ((= ptinh "*")  ;;;nhan
         (prompt "\nChon text de nhan:")
         (setq ss (ssget '((0 . "TEXT")))
               kqua 1)
         (while (and ss (> (sslength ss) 0))
           (setq kqua (* kqua (atof (cdr (assoc 1 (entget (setq ent (ssname ss 0))))))))
           (ssdel ent ss))
         (princ kqua))
     
        ((= ptinh "-")  ;;;tru
         (setq sobitru (car (entsel "\nChon so bi tru:"))
               sotru (car (entsel "\nChon so tru:\n"))
               kqua (- (atof (cdr (assoc 1 (entget sobitru))))
                 (atof (cdr (assoc 1 (entget sotru))))))    
         (princ kqua))
     
        ((= ptinh "/")  ;;;chia
         (setq sobichia (car (entsel "\nChon so bi chia:"))
               sochia (car (entsel "\nChon so chia:\n"))
               kqua (/ (atof (cdr (assoc 1 (entget sobichia))))
                 (atof (cdr (assoc 1 (entget sochia))))))    
         (princ kqua))    
      )  
      (if (not ssle) (setq ssle 0))
      (setq obj (vlax-ename->vla-object (car (entsel "\nChon text de ghi ket qua:")))
            ssle1 (getint (strcat "\nSo so le <" (itoa ssle) ">: ")))
      (if ssle1 (setq ssle ssle1))
      (vla-put-TextString obj (rtos kqua 2 ssle))  
      (princ)           
    )

     

×