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

Thaistreetz

Nhà quảng cáo
  • Số lượng nội dung

    905
  • Đã tham gia

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

  • Ngày trúng

    30

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


  1. bạn ơi bạn có thể nói rõ hơn được ko?nếu có lisp thì bạn cho mình xin được ko?xin cảm ơn trước

     

    Vẽ 1 đoạn thang. trên đoạn đó thể hiện đầy đủ các đối tượng như bạn mong muốn.

    Ví dụ đường bạn muốn vẽ gồm chữa Gas và 1 nét đứt. vậy bạn vẽ thế này. Gas ----------

    chọn text style cho chữ, độ dày của nét đứt thế nào tuỳ nhu cầu của bạn. sau đó gõ lệnh mkltype (cad fải đc cài express tool) save hình vẽ kia lại thành 1 file *.lin

    load file *.lin đó vào bản vẽ: trên thanh công cụ bạn bấm vào hộp thoại chọn loại nét vẽ, chon other rồi load file *.lin đó vào bản vẽ là xong

    PS: mình vừa tìm kiếm trên diễn đàn và thấy đã có bàn về vấn đề này rồi. Mình nhắc bạn nhớ điều này cho lần sau: hãy tìm kiếm trước khi hỏi để tránh có nhiều topic bàn chung về 1 vấn đề. cảm ơn.

    • Vote tăng 2

  2. mình sửa lại cho bạn rồi nè, mình thêm cả phần lựa chọn text style cho bạn đấy để bạn đỡ phụ thuộc khi máy của bạn không có font mặc định. Mình không biết bạn Thaistrezz đã sửa cho bạn rồi, nhưng thôi lỡ rồi mình cứ post lên nếu bạn thấy cái nào chạy êm không báo lỗi thì cứ xài nhé, còn nếu có lỗi thì cứ thông báo cho anh em diễn đàn biết để vá lỗi nhé.

    link đây: http://www.cadviet.com/upfiles/2/tdc.rar

    Bản sửa lỗi của Tomboy hay hơn của mình nhiều. nhưng mình góp ý chút để bản sửa của bạn hoàn thiện hơn để chạy tốt trong mọi điều kiện. lisp này chỉ vẽ tốt khi tắt bỏ chế độ bắt điểm. (nói chung tất cả các lisp có vẽ tự động cái gì đó ra màn hình đều cần phải bỏ chế độ bắt điểm mới chạy chính xác trên các bản cad đời cao đc. vì các bản cad này được thiết kế với chế độ bắt điểm thông minh so với chế độ bắt điểm bình thường của cad cũ).

    Lisp bắt đầu tự động vẽ sau khi load dữ liệu từ file *.prn. sau bước load file này bạn set giá trị biến OSMODE bằng 0, và trả về giá trị ban đầu khi lisp kết thúc vẽ.


  3. Khi dùng Hs, nova hoặc 1 chương trình nào đó là tiện ích của AutoCad có giao diện Form hay Dialog và cả dưới dòng Command bằng tiếng việt đều bị lỗi FOnt ( chỉ xảy ra đối với win víta và win 7) làm thế nào để khắc phục lỗi này vậy mọi người, mong đc giúp đỡ ! :bigsmile:

    Bạn đã cài bộ VN_SysFonts chưa? nó là bộ font hệ thống thường đi kèm bộ cài nova hay HS.

    Tuy nhiên cài bộ font này vào thì những chương trình khác dùng giao diện tiếng việt unicode lại không hiển thị được tiếng việt. cũng không hiểu sao các phần mềm ngành công trình cho đến bây giờ vẫn rất ít sử dụng font unicode cho giao diện.


  4. Các bạn giúp mình sửa lại cái lisp chạy Trắc dọc cống .

    *Hiện trạng:

    Lisp này dùng để vẽ trắc dọc cống

    -Sau khi nhập các số liệu thiết kế vào five của Excel sau đó save as chúng lại dưới dạng đuôi .prn

    -Từ Autocad R14 AP lisp TDC2005-v9.lsp, nhập lệnh tdc rồi mở five vừa save thi => bve TDOC

    (lisp này chạy được khi cad R14 có font ( Vn_vni.shx)

    *Sửa chữa:

    -Vì lisp này chỉ chạy ổn định trên cad R14 còn các CAD khác thì 1 là chạy không được ,2 là bị lỗi do đó nhờ các bạn trên diễn đàn CADViet chuyển giúp lisp này chạy trên Cad2007 và không phụ thuộc vào font trên .

    Nếu lisp này hoàn thiện nó sẽ giúp ích rất nhiều cho các bạn làm bên mảng thoát nước .

    -Rất mong được sự giúp đỡ của các anh em trên diễn đàn và sớm nhận được hồi âm.

    Thân chào

    Đây là five mình đã upload

    http://www.cadviet.com/upfiles/2/tdc.zip

    Cuả bạn đây. đã chạy tốt với cad 2007, 2008.

    Lisp này vẽ trắc dọc cống khá đẹp. bạn có thể chia sẻ cách tạo ra file số liệu bằng excel không. mình đoán chắc không phải nhập thủ công cho từng cọc chứ.


  5. Rất cảm ơn sự giúp đỡ của anh Thaistreetz và anh Tue_NV. Sau khi sử dụng cả 2 lisp em có nhận xét như sau:

    + Lisp sst của anh Thaistreetz: đơn giản, dễ sử dụng hơn. Nhưng anh để chữ có dấu nên dễ bị lỗi font. Có một nhược điểm nhỏ là chỉ có thể tăng giảm giá trị với số gia là số nguyên, còn với giá trị số thập phân thì không sử dụng được. Nhưng có một ưu điểm tuyệt vời là: có khả năng “nhớ” (lưu giữ) giá trị cuối cùng lần trước.

    + Lisp dstt của anh Tue_NV: Lisp này thực sự thể hiện đẳng cấp của một người viết lisp chuyên nghiệp. Lisp của anh cụ thể, rõ rang, lường mọi tình huống xảy ra, hơn cả yêu cầu của em. Nếu tích hợp được them khả năng “nhớ” số như ở lisp sst của anh Thaistreetz thì càng tuyệt vời hơn.

    Chân thành cảm ơn các anh!

     

    Mình đổi tên lệnh lại nhé, lisp trước mình gõ nhầm tên lệnh stt thành ra là sst nên khi sử dụng dễ gõ nhầm thành stt.

    Code đã sửa lại. Nếu không nhập chữ số thập phân khi chương trình hỏi thì chương trình mặc định nó là 0 nhé.

    (defun C:stt ()
    (setvar "cmdecho" 0)
    (command "undo" "begin")
    (setq oldim (getvar "Dimzin"))
    (setvar "Dimzin" 0)
    (if (not i) (setq i 1))
    (if (not a) (setq a 1))
    (setq	i1 (getreal (strcat"\nNhap so bat dau < " (rtos i 2 0) " >: "))
    a1 (getreal (strcat"\nSo gia < " (rtos a 2 0) " >: " )))
    (if i1 (setq i i1))
    (if a1 (setq a a1))
    (if (not tp) (setq tp 0))
    (setq tp1 (getint "\nSo chu so thap phan: "))
    (if tp1 (setq tp tp1))
    (while 
    (setq res (entsel (strcat "\nChon text de ghi STT thu " (rtos i 2 tp) "")))
    (setq res (entget (car res)))
    (setq res (entmod (subst (cons 1 (rtos i 2 tp)) (assoc 1 res) res))
    )
    (setq i (+ i a))
    );while
    (setvar "Dimzin" oldim)
    (command "undo" "end")
    (setvar "cmdecho" 1)
    );end

    • Vote tăng 1

  6. Một ví dụ của em.

    (defun C:stt()
    (command "undo" "Begin" "")
    (if (not i) (setq i 1))
    (if (not a) (setq a 1))
    (setq	i1 (getreal (strcat"\nSTT bat dau < " (rtos i 2 0) " >: "))
    a1 (getreal (strcat"\nSo gia < " (rtos a 2 0) " >: " 	)))
    (if i1 (setq i i1))
    (if a1 (setq a a1))
    (while
    (setq res (entsel (strcat "\nChon text de ghi STT thu " (rtos i 2 0) "")))
    (setq res (entget (car res)))
    (setq res (entmod (subst (cons 1 (rtos i 2 0)) (assoc 1 res) res)))
    (setq i (+ i a))
    );while
    (command "undo" "end" "")
    (princ)
    )

    Code này không khác mấy so với code của anh. nó vẫn chạy được nhưng luôn kèm theo dòng thông báo ấy, còn của anh thì chẳng sao cả. em chẳng hiểu vì sao nữa. :bigsmile:


  7. Sao bạn không vẽ tất cả bản vẽ của mình với tỷ lệ là 1/1. sau đó qua layout dùng viewport (lệnh MV) để zoom bản vẽ theo tỷ lệ bất kỳ nào mà bạn mong muốn nhỉ. Vẽ với tỷ lệ khác 1/1 rất khổ.

    Mình góp ý thế thôi, còn nếu đó là thói quen làm việc hoặc do đặc thù riêng công việc của bạn thì bạn có thể sửa thế này cho fù hợp với nhu cầu của mình vậy.

    Đối với Lisp thứ nhất.

    bạn sửa dòng này: (setq dtcon (* (getvar "AREA") tl tl))

    Thành: (setq dtcon (* (getvar "AREA") tl (/ tl 500 500) ))

     

    Đối với lisp thứ 2:

    Bạn sửa dòng này: (setq S (* (+ S (* dt 2)) tl tl) tdt (+ s tdt))

    Thành: (setq S (* (+ S (* dt 2)) tl (/ tl 500 500)) tdt (+ s tdt))

     

    PS: bạn dùng lisp thứ 2 là đủ.

    • Vote tăng 1

  8. Các anh viết dùm em 1 lisp,em cám ơn trước..^^..

    Trên cad em có nhiều text (vd:1,2,3,4,…..a,b,c,d,e….v.v.) em muốn nối các text đó bằng đường line,em có kiếm các lisp có liên quan rùi nhưng ko đúng với ý em…ý em muốn lisp như sau:

    +tại dòng command: noitext (em vd)

    +nhap cac diem can noi:1,2,3,4,a,d

    Enter (thì 1 nối 2, 2 nối 3, 3 nối 4, 4 nối a, a nối d,nhưng d thì ko được nối lại điểm 1)

    Enter xong thi trở lại

    +nhap cac diem can noi:

     

    Thế này thì có khác gì so với việc bạn vẽ theo cách thông thường nhỉ?

    gõ L -> enter -> bắt điểm vào 1 -> bắt điểm vào 2 ->...-> bắt điểm vào d -> ok

    chẳng khác tý nào cả


  9. Xin lỗi bạn Thaistreetz và Tue_NV mình đã nhầm

    [ quote]khu đất 10.000m2 (100x100) vẽ với tỷ lệ 1/10 thì chiều dài mỗi cạnh là 100, nhưng d/t tính ra là 1000.000m2, nhưng với khu đất 1000m2 vẽ với tỷ lệ 1/1 thì d/ là 1.000.000m2 gấp 1000 lần[ /quote]

    @Khu đất 1.000m2 nên mới có cạnh 100x100 t/l 1/10 dẫn tới sự hiểu lầm của 2 bạn.

     

    Đúng rồi đó. Bạn chỉ cần hiểu đơn giản: Ngoài thực địa khu đất của bạn có mỗi cạnh là 100m. nhưng bạn vẽ với tỷ lệ 1/10 (1 đơn vị vẽ trong cad = 10m ngoài thực địa) thì bản vẽ của bạn sẽ có kích thước 10x10 như mình đã nói.

    cách tính của lisp như sau:

    đo diện tích trên bản vẽ được S = 10x10=100. => diện tích thực = S/(Tỷ lê)^2 = 100x10x10 = 10000.


  10. Vẫn chưa đúng bạn ơi, bây giờ thì diệất nhiều

    (Cụ thể như: khu đất 10.000m2 (100x100) vẽ với tỷ lệ 1/10 thì chiều dài mỗi cạnh là 100, nhưng d/t tính ra là 1000.000m2, nhưng với khu đất 1000m2 vẽ với tỷ lệ 1/1 thì d/ là 1.000.000m2 gấp 1000 lần)

    Nhờ bạn xem lại

     

    Đâu nhỉ. lần này mình chạy đúng mà.

    khu đất 10.000m2 (100x100) vẽ với tỷ lệ 1/1 thì chiều dài mỗi cạnh là 100 trên bản vẽ => lisp chạy đc kq là 10000.00

    khu đất 10.000m2 (100x100) vẽ với tỷ lệ 1/10 thì chiều dài mỗi cạnh là 10 trên bản vẽ => lisp chạy đc kq là 10000.00

    Như vậy là chính xác. lần này thì bạn nhầm rồi. hehe


  11. Bạn Thaistreetz có thể xem lại giúp mình không, cái này khi tính với tỷ lệ 1/1 thì d/t đúng, nhưng với những tỷ lệ khác thì không chính xác

    (VD: Mình có khu đất 10.000m2 (100x100) vẽ với tỷ lệ 1/10 thì chiều dài mỗi cạnh là 100, nhưng d/t tính ra là 1000m2, vậy thiếu đi 10 lần)

    Mình muốn là nhập tỷ lệ bản vẽ vào thì lisp tự tính diện tích sao cho d/t đó là d/t thực của khu đất. Cảm ơn bạn

     

    Chết thật. đúng là mình nhầm chỗ này. đúng ra diện tích đo được phải chia cho bình phương của tỷ lệ vẽ mới đúng. mình mới nhân 1 lần. cảm ơn bạn đã phát hiện ra sai sót chết người này. :bigsmile:

    Mình sửa trực tiếp vào code đã post bên trên rồi nhé.

    • Vote tăng 1

  12. Cám ơn thaistreetz và anh tuệ nhé đây la chương trình mình đã thêm phần tính khối lượng, vì mình làm đóng tàu nên khối lượng riêng mình lấy là của thép mọi người tham khảo nhé

    http://www.cadviet.com/upfiles/2/ert_1.lsp

     

    Lisp của bạn chưa chạy được vì thiếu đâu đó một (hoặc vài) dấu đóng ngoặc.

    mình đã xem qua lisp của bạn và có vài điều lưu ý bạn về lisp này.

    - Xóa dòng (vl-load-com) đi vì lisp này không cần dùng đến nó. nếu để nó lại thì không sao đối với các bản cad từ 2004 trở lên. nhưng đối với các bản cad cũ như cad 14 sẽ không chạy được. Một số người vẫn phải dùng cad14 cho 1 vài việc.

    - tuyệt đối không sử dụng chữ ký tự t làm biến nhé. (bạn tham khảo giải thích của Bác Hoành về biến này tại đây

    - Nên có thêm phần khai báo khối lượng riêng của vật liệu cho phù hợp với nhu cầu chung của nhiều người, nhiều loại công việc.

    - Nên sửa lại phần kẻ bảng cho gọn gàng hơn, giúp lisp chạy nhanh hơn đồng thời đỡ rác bản vẽ.

    - Khi viêt lisp nên chú ý đặt ra trường hợp người dùng đang chạy thì nhất ESC bỏ dở lệnh giữa chừng dẫn đến việc rất nhiều biến hệ thống lisp can thiệp từ đầu sẽ bị thay đổi, dẫn đến khó khăn cho người vẽ. để giảm thiểu những thay đổi này thì nên trả lại giá trị ban đầu của các biến hệ thống ngay sau 1 thay đổi càng sớm càng tốt.

    • Vote tăng 1

  13. Một lần nữa nhờ mọi người viết hộ em 1 lisp. Tên lisp có thể mô tả là: thay đổi (hoặc nhập) số thứ tự theo sự chỉ định của chuột. Nghĩa là em có một bản vẽ có nhiều số, các số đặt lung tung, không theo trình tự nào cả. Bây giờ em muốn có 1 lisp như sau:

    + Nhập lệnh.

    + Nhập số bắt đầu (từ bàn phím), ví dụ số 25.

    + Nhập khoảng cách (độ tăng, giảm), ví dụ 1.

    + Dùng chuột pick vào 1 text bất kỳ, text đó biến thành số 25.

    + Pick vào text thứ 2, text đó thành số 26, text thứ 3 sẽ là 27…

    Rất mong nhận được sự giúp đỡ. Cảm ơn!

     

    (defun C:sst ()
    (setvar "cmdecho" 0)
    (command "undo" "Begin" "")
    
    (if (not i) (setq i 1))
    (if (not a) (setq a 1))
    (setq	i1 (getreal (strcat"\nSTT Ðâu Tiên < " (rtos i 2 0) " >: "))
    a1 (getreal (strcat"\nSo gia < " (rtos a 2 0) " >: " 	)))
    (if i1 (setq i i1))
    (if a1 (setq a a1))
    (while 
    (progn
    (setq res (entsel (strcat "\nChon text de ghi STT thu " (rtos i 2 0) "")))
    (setq res (entget (car res)))
    (setq res (subst (cons 1 (rtos i 2 0)) (assoc 1 res) res))
    (entmod res)
    (setq i (+ i a))
    );progn
    );while
    (command "undo" "end" "")
    (setvar "cmdecho" 1)
    );end

    • Vote tăng 1

  14. Cảm ơn Anh Tuệ rất nhiều. :bigsmile:

    Đây là lisp đã đã được sửa để tính diện tích cả hình có lỗ khoét và không có lỗ khoét.

    (defun c:bdt()
    (setvar "cmdecho" 0)
    (command "undo" "begin")
    (setq lacol (getvar "CEColor"))
    (setq ladin (getvar "dimzin"))
    (setq laos (getvar "osmode"))  
    (if (not tl) (setq tl 1))
    (if (not h) (setq h 1))
    (setq tl1 (getreal (strcat "\nty le ban ve < 1/" (rtos tl 2 0) " >: 1/"))
       caot1 (getreal (strcat "\nCao text < " (rtos h 2 2) " >: ")))
    (if tl1 (setq tl tl1))
    (if caot1 (setq h caot1))
    (setq k 0 tdt 0)
    
    (setvar "dimzin" 0)
    (setvar "OSMODE" 0)
    (setq PT (getpoint "\nChon diem xuat bang thong ke dien tich (mep trai):"))
    (setq     P1 (list (+ (car PT)(* 6 h)) (cadr PT))
       P2 (list (+ (car PT)(* 22 h)) (cadr PT))
       P3 (list (car PT) (- (cadr PT)(* 3 h)))
       P4 (list (car P1) (cadr P3))
       P5 (list (car P2) (cadr P3))
       P6 (list (+ (car PT)(* 11 h)) (+ (cadr PT)(* 2 h)))
       P7 (list (+ (car PT)(* 3 h)) (- (cadr PT)(* 1.5 h)))
       P8 (list (+ (car PT)(* 14 h)) (- (cadr PT)(* 1.5 h)))
    );setq
    (command "pline" PT P2 P5 P3 "C"
           "pline" P1 P4 ""
           "text" "m" P6 (* 1.2 h) 0 "%%UB¶ng thèng kª diÖn tÝch"
           "text" "m" P7 h 0 "STT"
           "text" "m" P8 h 0 "DiÖn tÝch (m2)"
    );command
    
    (setq pt1 (getpoint "\n Chon mien tinh dien tich : "))
    (while (/= pt1 nil)
    (command "erase" ss "")
    (setq k (+ 1 k))
    (command "TEXT" "m" pt1 (* 3 h) 0 (rtos k 2 0))
    (setq PT (list (car P3) (cadr P3))
       P1 (list (+ (car PT)(* 6 h)) (cadr PT))
       P2 (list (+ (car PT)(* 22 h)) (cadr PT))
       P3 (list (car PT) (- (cadr PT)(* 3 h)))
       P4 (list (car P1) (cadr P3))
       P5 (list (car P2) (cadr P3))
       P7 (list (+ (car PT)(* 3 h)) (- (cadr PT)(* 1.5 h)))
       P8 (list (+ (car PT)(* 14 h)) (- (cadr PT)(* 1.5 h)))
       P9 (list (car PT) (- (cadr P3)(* 3 h)))
       P10 (list (car P1) (cadr P9))
       P11 (list (car P2) (cadr P9))
       P12 (list (car P7) (- (cadr P3)(* 1.5 h)))
       P13 (list (car P8) (cadr P12))
       );setq
    (setq frome (entlast));; chon doi tuong cuoi cung truoc khi boundary
    (command "cecolor"4 "-boundary" pt1 "");; boundary
    (setq toe (entlast));; chon doi tuong cuoi cung sau khi boundary
    (setq cur frome	ss (ssadd) S 0)
    (while 	(not (eq cur toe));; chon cac doi tuong tu frome den toe
    (setq cur (entnext cur) ss (ssadd cur ss))
    (command "area" "S" "O" ss "" "")
    (setq dt (getvar "area") S (+ S dt))
    );while
    (command "area" "A" "O" "L" "" "")
    (setq dt (getvar "area"))
    (setq S (* (+ S (* dt 2)) tl tl) tdt (+ s tdt))  
    (setvar "CEColor" lacol)
    (command "pline" PT P2 P5 P3 "C"
     "pline" P1 P4 ""
     "text" "m" P7 h 0 (rtos k 2 0)
     "text" "m" P8 h 0 (rtos s 2 2))
    (setq pt1 (getpoint (strcat "\nTong dien tich = " (rtos tdt 2 3) "m2. chon mien do tiep theo...")))
    );while
    (command "erase" ss "")
    (setq ss nil)
    (setvar "DIMZIN" ladin)
    (command     "pline" P3 P9 P11 P5 "C"
           "pline" P10 P4 ""
           "text" "m" P12 h 0 "Tæng"
           "text" "m" P13 h 0 (rtos tdt 2 2)
    );command
    (setvar "OSMODE" laos)
    (command "undo" "end")
    (setvar "cmdecho" 1)
    )

     

    @vantiteo: Mình đang bận quá, tranh thủ thời gian ngủ trưa để sửa lại lisp này cho mọi người thôi. bạn có thể xem lisp của anh Tuệ để tìm ra chỗ thiếu sót của bạn. lisp của anh Tuệ rất hay.

    @xuandao0708: Bạn cần phân biệt tỷ lệ vẽ và tỷ lệ in nhé. lisp này yêu cầu nhập vào tỷ lệ vẽ vì chỉ có tỷ lệ vẽ mới ảnh hưởng trực tiếp đến kết quả tính toán. theo như bạn nói thì thì tỷ lệ 1/500 của bạn chính là tỷ lệ in của bản vẽ ra giấy. còn thực chất bản vẽ của bạn vẫn được vẽ với tỷ lệ 1/1. nghĩa là 1 đơn vị vẽ trong cad sẽ tương ứng với 1 đơn vị đo ngoài thực địa.

    • Vote tăng 6

  15. Nhờ các Bác chỉnh lại lisp này dùm em 1 cái, em làm bên trắc địa nên khi yêu cầu nhập tì lệ thì em nhập 1/500 ( tương đương tỉ lệ 1/1), 200 ( tương đương 5/2), 1000 ( tương đương 1/2), 2000 ( tương đương 5/20). Cá mơn các Bác nhiều

    Mình ko fải dân trắc địa nên không hiểu lắm ý của bạn về mấy tỷ lệ kia.

    Theo như mình hiểu thì cái bạn cần không fải là diện tích thực tế mà là diện tích thực tế /500 lần. Nếu đúng vậy thì con số này dùng vào việc gì nhỉ?


  16. Việc mình không tạo textstyle riêng cho lisp này là có 1 vài lý do.

    1. việc lisp tạo ra 1 textstyle mới rất có thể sảy ra trường hợp trùng tên với 1 textstyle đã có trong bản vẽ. và như thế lisp có thể gây ra sự thay đổi về font chữ của các chi tiết khác ngoài ý muốn.

    2. việc sử dụng font chữ nào còn tùy vào nhu cầu của người sử dụng. mỗi người thích dùng 1 loại font chữ khác nhau, với mỗi loại bản vẽ cũng lại có những font chữ mang đặc thù riêng.

    3. Lisp sẽ sử dụng textstyle hiện thời khi bạn vẽ. như thế sẽ đảm bảo sự đồng bộ về các textstyle của người sử dụng. ngoài ra nó cũng giúp người sử dụng có được sự lựa chọn linh động hơn cho nhu cầu của mình.

    Mình là KS người Băc, KS ngoài này thường thích sử dụng bảng mã TCVN3 nên mình mặc định lisp chạy với TCVN3. còn các bạn miền nam thì lại thích sử dụng bảng mã VNI hơn. các bạn cần chỉnh lại 1 chút trước khi sử dụng.

    • Vote tăng 4

  17. Bạn chuyển qua dùng lisp này đi. lisp kia mình thấy viết hơi dài dòng nếu chỉ để tính diện tích.

    Bạn chú ý nhé. những lisp tính diện tích dạng này ở diễn đàn khá nhiều. bạn thử tìm kiếm bằng hộp thoại tìm kiếm xem. chứ nhờ mọi người một lisp quen thuộc thế này sẽ có rất ít người trả lời bạn, đồng thời bạn cũng mất thời gian chờ đợi rồi lỡ mất việc.

    Lisp tính diện tích này bạn có thể sửa lại fần xuất kết quả ra màn hình như mình đã gợi ý ở bài trên cho fù hợp với nhu cầu sử dụng của bạn

    (defun C:gdt (/ P1 dtich dtich1 ss1 ss2)
     (setvar "cmdecho" 0)
     (command "undo" "Begin" "")
     (command "UCS" "W" "")
     (command "Undo" "Mark")
     (setq lacol (getvar "CEColor"))
     (setq laos (getvar "OsMODE"))
     (setq ladim (getvar "Dimzin"))
     (setvar "OSMODE" 0)
    
     (setq P1 (getpoint "\n Chi diem trong vung tinh dien tich"))
     (command "CECOLOR" 4)
     (command "boundary" P1 "")
     (setvar "CECOLOR" lacol)
     (setq	ss1 (ssget "L")
    ss2 (ssadd)
    ss2 (ssadd (ssname ss1 0) ss2)
    ent (ssname ss1 0)
     );setq
    
     (command "area" "o" "l")
    
     (setq dtich (getvar "Area"))
    
     (setq P1 (getpoint "\n Chi diem tiep theo ..."))
     (while (/= P1 nil)
    
       (command "CECOLOR" 4 "boundary" P1 "")
       (setvar "CECOLOR" lacol) 
       (setq ss1 (ssget "L")
      ss2 (ssadd (ssname ss1 0) ss2)
      ent (ssname ss1 0)
       );setq
       (command "area" "o" "l")
       (setq dtich1 (getvar "Area")
      dtich	 (+ dtich dtich1)
       );command
       (setq P1 (getpoint "\n Chi diem tiep theo ..."))
      );while
    (setvar "OSMODE" laos)
    (command "erase" ss2 "")
    (setvar "dimzin" 0)
    (setq res (entsel "\n Chon text ghi ket qua, Click hoac Enter de ghi ket qua ra man hinh "))
    (if res
    (progn
     (setq res (entget (car res)))
     (setq res (subst (cons 1 (rtos dtich 2 2)) (assoc 1 res) res))
     (entmod res)
    );progn
    (progn
     (setq p (getpoint "\n Chon diem nhap ket qua" ))
     (if (not h) (setq h 1))
     (setq	caot1 (getreal (strcat "\nCao text < " (rtos h 2 0) " >: ")))
     (if caot1 (setq h caot1))
     (command "text" p h "0" (rtos dtich 2 2))
    );progn
    );if
    
     (setvar "dimzin" ladim)
     (command "UCS" "p" "")
     (command "undo" "end" "")
     (setvar "cmdecho" 1)
    )

    • Vote tăng 1

  18. bạn thay đoạn

     

    (setq cao (getdist "\n Nhap chieu cao chu : "))

    (wtxt (rtos S 2 2) po 0 cao)

     

    thành

     

    (if (not h) (setq h 1))

    (setq caot1 (getreal (strcat "\nCao text < " (rtos h 2 0) " >: ")))

    (if caot1 (setq h caot1))

    (command "text" po h "0" (rtos dtich 2 2))

     

    hoặc

     

    (wtxt (rtos S 2 2) po)

     

    Mỗi cái đều có cái hay cái dở của riêng nó. dùng cái nào thì tuỳ bạn.

    Ban có thể đọc thêm tại đây để hiểu vì sao lisp trên bị lỗi (phần 3 của bài số 1)

    PS: lisp này viết dài dòng rắc rối quá!


  19.  

    Ồ không! cái em cần nó thê này cơ.

    ví dụ phép cộng:

    Hàng 1: A B C D ....

    Hàng 2: a b c d ...

    Hàng kết qủa: A+a B+b C+c D+d

    Lisp này em chắc chắn là Bác Hoành post trong chính topic này. nhưng mà topic này dài quá em tìm mà muốn khùng luôn.

    Các sếp Mod hay Admin có nên xem xét việc xóa bớt những bài viết không cần thiết (kiểu những bài nêu vấn đề vô nghĩa, những bài chỉ để cảm ơn người viết ...) đối với riêng topic này để rút gọn nó lại được không nhỉ. đây là topic rất có giá trị và có thể coi như thư viện lisp của cadviet. nhưng mà tìm bài trong này thực sự rất mệt mỏi.


  20. Thế thì tổng hợp tất cả vào 1 file làm gì chứ nhỉ. càng khó khăn cho việc sử dụng, quản lý, chỉnh sửa cũng như nghiên cứu các lisp. Lisp thì trên diễn đàn này có nhiều rồi. bạn cứ tìm khắc sẽ thấy, không thấy thì có thể nêu khó khăn, mọi người sẽ giúp bạn

×