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

tinya1225

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

    121
  • Đã tham gia

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

  • Ngày trúng

    3

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


  1. nhưng em chưa hiểu vì sao giờ lại bị như thế.Trước em vẫn dùng bình thường mà.

     

    Xin cho em hỏi nguyên nhân gây ra sự việc trên ạ.Thank !

    "Bị như thế" là thế nào hả bạn. Và "bình thường" là như thế nào.

    Bạn đặt tên nét in thành 1 kiểu riêng của bạn, cài hết các thông số, khi nào in thì dùng chứ đâu phải lúc nào cũng phải cài lại nét in đâu.


  2. E chào các bác. E có chút góp ý cho topic "Viết lisp theo yêu cầu". Không biết có ai góp ý trước chưa nếu có nhờ mod del bài giúp e.

    "Viết lisp theo yêu cầu" là 1 topic rất hay và được sự quan tâm của rất nhiều người. Nhưng vì có quá nhiều bài viết nên thật khó để có thể theo dõi hết các lisp trong topic. E tham gia diễn đàn cũng khá lâu nhưng khi vào topic "Viết lisp theo yêu cầu 1&2" thì thực sự choáng vì số lượng bài viết quá nhiều.

     

    E có ý kiến như sau:

    Tại trang đầu tiên sẽ có tổng hợp tên lisp hoàn thiện và chức năng để tiện theo dõi và tìm kiếm những lisp có ích cho mình, kèm theo là đường link hoặc số trang để đến cho nhanh.

     

    Mong các bác lưu tâm. Em xin cảm ơn và chúc cả nhà 1 ngày vui vẻ!

    • Vote tăng 1

  3. em có 2 đối tượng có 1 phần các đối tượng đè lên nhau.giả sử đối tượng A đè lên đối tượng B nên chỗ đè lên nhau hiển thị đối tượng A.giờ e muốn làm cho tại chỗ đè lên nhau đối tượng B được hiển thị

    có lệnh nào như thế ko ạ ?

    mong được mọi người giúp đỡ !. cảm ơn nhiều

    Bạn thử dùng lệnh WIPEOUT xem có ok không. Có khá nhiều cách để đưa một đối tượng lên trên đối tượng khác, nếu bạn nói rõ đối tượng của bạn là j thì sẽ có cách cụ thể hơn. Tốt nhất là kèm theo bản vẽ.


  4. Em sử dụng list này ạ.

    Em chưa biết cách upload nên dùng tạm cách copy and patse.

    Ở phía dưới có anh nói là dùng tcout. Trong trường hợp này không dùng tcout dược đâu ạ.

    Bạn đã hiểu về lệnh TCOUNT chưa mà nói là không dùng đc vậy. Bạn copy tất cả những chữ cần đánh số với cùng mẫu C01-D, dùng TCOUNT với chức năng find&replace (search string value gõ 1)hoàn toàn có thể làm được theo yêu cầu của bạn.


  5. Em chào các bác.

    Em được biết trên diễn đàn đã có list tăng chỉ số.

    Ví dụ: C01; C02...

    Tuy nhiên trong trường hợp của em bắt đầu là C01-D; em muốn sử dụng list để tạo ra C02-D; C03-D... thì nó lại tăng ký tự cuối cùng là C01-D; C01-E; C01-F.

    Em muốn hỏi có bác nào có list để tăng chỉ số trong trường hợp của em không ạ?

    Thank cả nhà!

    Lệnh TCOUNT có thể làm đc cái bạn cần rùi mà sao lại phải dùng lisp nữa.

    Và chi tiết về lệnh TCOUNT thì bác Hoành đã trình bày rất rõ rùi bạn đọc thì sẽ làm đc.

    Chúc thành công.


  6. dù sao cũng cảm ơn các anh đã hưỡng dẫn cho em

    những cái trên vẫn không phải thứ em đang cần.

    (em đã học xong cad cơ bản và bây giờ muốn nâng cao tay nghề nên...)

    Cám ơn mà hình như bạn chưa thanks+ cho ai thì phải :unsure:

    Thế bạn đã tìm được cái bạn cần chưa, nếu có rồi thì mong bạn có thể chia sẻ với anh em để nâng cao kiến thức.

    Nếu muốn đố thì bạn nên post bài vào mục đố vui để khỏi mất công trả lời của người khác.


  7. Mọi người cho mình hỏi tai sao ở hộp thoại layer trong cad 2007 mình không đặt tên cho layer trong mục name được,mà máy nó cứ mặc định là layer1,layer2,layer3... rê chuột vào thì không xuất hiện con trỏ gì cả,không viết tên được.

    Từ lúc bạn tạo layer thì điều đầu tiên là đặt tên cho layer luôn mà bạn.


  8. Bạn xe lại các vấn đề sau:

    - Vẽ trên layer nào? nếu trên layer depoint thì toi.

    - Thiết lập in ấn trong Page Setup Manage\Plot area\ (display\ windown\Limits\Layout)---> sau đó ấn vào Print Priview xem trước, nếu có đủ thì in ra OK.

    Bạn post bản vẽ lên đây xem nào

    Chúc bạn thành công!

    Để defpoints vẫn preview đc mà bạn. chỉ có in thì không đc thôi.

    • Vote tăng 1

  9. e in trong autocad 2007 có bị lỗi sau

    khi in em chỉ thấy khung mà ko thấy hình

    các bác chỉ giúp em với

    em cảm ơn!

    Nếu in ra chỉ có khung mà không có hình thì bạn nên kiểm tra lại bản vẽ xem có để layer defpoints không. bạn nói hơi chung chung nên mình chỉ biết trả lời vậy thôi. nếu muốn rõ ràng bạn nên miêu tả kỹ hơn và kèm theo bản vẽ.


  10. tất nhiên là các layer đã có sẵn rồi.chỉ 2 cái click chuột trong CAD là sao hả anh?

    em cũng chưa biết lisp là cái gì?

    anh có thể nói rõ hơn(hướng dẫn) cho em được không?thanks

    Bạn đang ở layer 1, muốn đổi layer hiện hành sang 2 thì có thể làm như sau:

    chọn layer cần đổi, ấn vào "make object's layer current" trên thanh layers.

    Hoặc có thể dùng lệnh laymcur với tác dụng tương tự.

    • Vote tăng 1

  11. sao e vào layer để chỉnh nét,nó lại hiện ra cái bản báo lổi như thế này:FATLA ERROR:Unhandled e06d7363h Exception at 75919617h.Các mục khác thì vẫn bình thường,lúc trước vào layer chỉnh được,nhưng ko biết nay sao nó báo như z.cái này do lỗi gì z các a?

    Bạn có thể post bản vẽ của bạn lên để mọi người xem thử chứ nói không thế này chỉ có ai gặp thì mới biết như thế nào thôi.

    • Vote tăng 1
    • Vote giảm 1

  12. mình có 2 thắc mắc mong các bạn chỉ giúp

    thứ 1: mình có 3 nét vẽ chồng lên nhau, bề dày 3 nét vẽ khác nhau, cho mình hỏi khi đem đi in, có phải nét nào dày hơn thì sẽ thể hiện trên giấy in cho dù nét đó nằm dưới 2 nét còn lại? còn 2 nét có bề dày như nhau thì in ra cũng là 1 nét đó phải ko?

     

    thứ 2: khi mình kết thúc lệnh mình thường hay nhấn enter để kết thúc , nhưng mình thấy có bạn ko nhấn enter mà nhấn chuột phải cũng kết thúc luôn, ko biết vào phần nào chỉnh để được như thế?

     

    mong các bạn chỉ giúp mình, thanks you!

    1. nó còn tuỳ vào màu sắc mình đặt nữa. màu ở duới nét to màu nhạt mà màu trên bé hơn nhưng màu đậm thì nó sẽ in ra cả 2 cùng là màu đen nhưng độ đậm nhạt khác nhau.

    2. op, user preferences, right click customization, tích vào ENTER ở command mod, ok

    • Vote tăng 3
    • Vote giảm 1

  13. ĐVH tham gia CADViet từ 2010. Quá trễ so với nhiều bác. Tuy nhiên xin có một góp ý nhỏ thế này:

    Hiện nay, các topic mới mở chỉ chiếm 5/30 topic hiện trên 1 trang. Như vậy là quá ít. Vì 25 topic còn lại nghiễm nhiên có vị trí đứng cố định trên CADViet, nhưng trong số đó có nhiều topic không mang tính đại chúng. Còn các topic thời sự chỉ có 5, đôi lúc mới viết xong, lát nữa mở lại đã thấy biến mất, muốn đọc phải sang trang tiếp.

    Vậy đề nghị BQT chỉ nên chọn cỡ 50% topic là cố định, còn 50% topic là thời sự hằng ngày để người đọc và post thuận tiện theo dõi hơn.

    Thân ái!

    Em xin phép trình bày ý kiến của mình. Sao chúng ta không làm song song 2 mục: 1 là những topic mới lập và 2 là những topic hay nhất, vừa dễ cho viêc theo dõi topic mới và tiếp tục giới thiệu nhũng topic đáng giá của forum. Em chỉ có ý tưởng thế mong các bác đừng trách :D

    • Vote tăng 1
    • Vote giảm 2

  14. Trường hợp mình hỏi nó áp dụng rất tốt cho trường hợp bạn làm trong ngành giao thông. ví dụ bạn có 1 xref về địa hình hiện trạng, xref này lồng trong bản vẽ mặt bằng thiết kế chi tiết. Nếu để thế mà in trong trừong hợp làm bản vẽ tổ chức giao thông thì không ổn vì sẽ không nhận biết đựoc đâu là vạch sơn, chỉ cẩn làm 1 Polyline giới hạn bởi mặt đựờng thiết kế sau đó cho nó hiển thị phần block bên ngoài, thế là ổn. Nhưng mình chưa tìm ra giải pháp nên hiện tại đang phải vẽ 1 Polyline là đa giác lõm nên rất mất thời gian.

    bạn này hình như - mình 1 phát thì phải. mình không phải chủ nhân của dấu - cho bạn đâu. nếu đúng bạn thì + bù cho mình cái nhé, vất vả lắm đó :(


  15. Không biết đã có topic nào đề cập vấn đề này chưa và mình thấy trường hợp thay đổi text trong khi đánh số cọc (dành cho kĩ sư kết cấu) này rất hay gặp. Đó là cần thêm bớt một số lượng cọc và số thứ tự cọc thay đổi theo. Chắc chỉ có dùng lisp cho trường hợp này mới đỡ mất việc. Mình đã thử tìm về các lisp liên quan đến nội dung text nhưng không thấy.

    Các bác xem có topic nào đề cập chưa hay viết dùm mình lisp với.

     

    Lệnh: bt

    Chọn các text cần thay đổi (dạng số)

    Nhập số hạng cần thêm (bớt)

     

    Kết quả tạo ra như hình minh họa:

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

    Các bác giúp mình với :)

    http://www.cadviet.com/forum/index.php?showtopic=43745&st=0&p=149882&fromsearch=1entry149882

    Xem có đúng yêu cầu của bạn ko. cái này mình cũng đã yêu cầu lâu lâu rùi.

    Đúng thì nhớ thanks + tớ vài cái nhé ^^

    • Vote tăng 2

  16. Bạn nhớ lần sau nếu gặp lỗi tương tự (báo không có định nghĩa với hàm ..VL..) thì thêm dòng (vl-load-com) vào đầu lisp nhé :)

    Code đây, bạn dùng tạm, mình k ưa nó lắm :(

     

    (defun c:bdt(/ ptt1 ptt2 ptt3 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13 ss )
    (vl-load-com)
    (grtext -1 "Free lisp from Cadviet @Ketxu (S\U+01A1n T\U+00F9ng)! ")
    (defun wtxt_l(txt p h)
    (entmake (list (cons 0 "TEXT") (cons 7 (getvar "textstyle")) (cons 40 h)(cons 72 1)(cons 11 p) (cons 1 txt) (cons 10 p))))
    (defun mid (ent / p1 p2)
    (vla-getboundingbox (vlax-ename->vla-object ent) 'p1 'p2)
    (setq p1 (vlax-safearray->list p1)
    			p2 (vlax-safearray->list p2)
    			pt (mapcar '+ p1 p2)
    			pt (mapcar '* pt '(0.5 0.5 0.5))
    )
    pt
    )
    (defun ST:Entmake-Pline (list_pt Layer Color isClosed / Polylist)
    (setq Polylist (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline")
       (cons 8 Layer) 
       (cons 43 0) 
       (cons 62 Color) 
       (cons 90 (length list_pt))
    (cons 70 (cond ((= isClosed T) 1)(T 0)))
    )
    Polylist (append Polylist (mapcar '(lambda (coord) (cons 10 coord)) list_pt)))
    (entmakex PolyList)
    )
    (setvar "cmdecho" 0)
    (command "undo" "begin")
    (setq ladin (getvar "dimzin")) 
    (if (not tl) (setq tl 1))
    (if (not h) (setq h 1))
    (setq tl1 (getreal (strcat "\nT\U+1EC9 l\U+1EC7 : < 1/" (rtos tl 2 0) " >: 1/"))
       caot1 (getreal (strcat "\nChi\U+1EC1u cao text : < " (rtos h 2 2) " >: ")))
    (if tl1 (setq tl tl1))
    (if caot1 (setq h caot1))
    (setq k 0 tdt 0 ss (ssadd) tLay (getvar "clayer"))
    (setvar "dimzin" 0)
    (setq PT (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m xu\U+1EA5t b\U+1EA3ng th\U+1ED1ng k\U+00EA di\U+1EC7n t\U+00EDch (M\U+00E9p tr\U+00E1i) :"))
    (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
    (ST:Entmake-Pline (list PT P2 P5 P3) tLay 4 T)
    (ST:Entmake-Pline (list P1 P4) tLay 4 Nil)
    (wtxt_l "%¶ng thèng kª diÖn tÝch" P6 (* 1.2 h))
    (wtxt_l "STT" P7 h)
    (wtxt_l "DiÖn tÝch (m2)" P8 h) 
    (if (setq ptt1 (getpoint "\n\U+0110i\U+1EC3m th\U+1EE9 nh\U+1EA5t :"))(setq ptt2 (getpoint ptt1 "\n\n\U+0110i\U+1EC3m th\U+1EE9 hai :")))
    (if (setq ptt3 (getpoint ptt2 "\n\U+0110i\U+1EC3m th\U+1EE9 ba :"))  (setq ptt4 (getpoint ptt3 "\n\U+0110i\U+1EC3m th\U+1EE9 t\U+01B0 :")))
    (while (and (/= ptt1 nil)(/= ptt2 nil)(/= ptt3 nil)(/= ptt4 nil))
    (setq k (+ 1 k))
    (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
    
    (ST:Entmake-Pline (list ptt1 ptt2 ptt3 ptt4) tlay 4 T)
    (setq elast (entlast));; boundary	
    (setq dt (* (distance ptt1 ptt2)(distance ptt3 ptt4) tl tl 0.000001) tdt (+ tdt dt))
    (ssadd elast ss)
    (ST:Entmake-Pline (list PT P2 P5 P3) tLay 4 T)
    (ST:Entmake-Pline (list P1 P4) tLay 4 Nil)
    (wtxt_l (rtos k 2 0) P7 h)
    (wtxt_l (rtos dt 2 2) P8 h)
    (wtxt_l (rtos k 2 0) (mid elast) h)(ssadd (entlast) ss)	 
    (if (setq ptt1 (getpoint "\n\U+0110i\U+1EC3m th\U+1EE9 nh\U+1EA5t :"))(setq ptt2 (getpoint ptt1 "\n\n\U+0110i\U+1EC3m th\U+1EE9 hai :")))
    (if (setq ptt3 (getpoint ptt2 "\n\U+0110i\U+1EC3m th\U+1EE9 ba :"))  (setq ptt4 (getpoint ptt3 "\n\U+0110i\U+1EC3m th\U+1EE9 t\U+01B0 :")))  
    );while
    (setvar "DIMZIN" ladin)
    (ST:Entmake-Pline (list P3 P9 P11 P5) tLay 4 T)
    (ST:Entmake-Pline (list P10 P4) tLay 4 Nil)
    (wtxt_l "Tæng" P12 h)  
    (wtxt_l (rtos tdt 2 2) P13 h)
    (initget 1 "c k C K")
    (if (setq ans (getkword " X\U+00F3a \U+0111\U+00E1nh d\U+1EA5u [C/K ] :?"))
      (setq ans (strcase ans )))  
    (if (or (= ans "")(= ans nil)(= ans "C")) (command "erase" ss ""))
    (command "undo" "end")
    (setvar "cmdecho" 1)
    )

    Hề hề hề nó chạy ngon rùi bác a. Nhưng đúng là khó ưa thật^^. nhìn nó vẽ mấy cái đường thẳng bùn cười chít.

    Bác chu đáo quá còn thêm vào phần xóa đánh dấu nữa^^

    Em cám ơn bác nhiều a.

    Chúc bác và cả nhà 1 ngày may mắn :D

    • Vote tăng 1

  17. Trước đến h dùng lệnh Xclip chỉ cho hiển thị 1 phần Block bên trong Vùng boudary. Các bác có biết lệnh hệ thống nào để cho nó hiển thị theo tiêu chí ngược lại không. Nghĩa là khi chọn Polyline thì phần hiển thị của Block lại là vùng bên ngoài của Polyline không? Thank's

    dùng lệnh wipeout cũng đc mà :)

    nó ngược lại với lệnh xc thay vì hiện 1 phần nó ẩn đi 1 phần :D

    • Vote tăng 1
    • Vote giảm 1

  18. - 1,3 : OK

    - 2 : nếu bạn chọn 4 điểm bất kỳ, chẳng may nó không là 4 điểm của 2 cạnh vuông góc thì bạn muốn tính DT theo kiểu gì đây, hay chỉ là chiều dài x chiều rộng và cũng không thiết phải tạo cho bạn cái preview như lisp đang làm ??? :)

    Update cái mới dễ nhìn hơn :

    (defun c:bdt(/ ptt1 ptt2 ptt3)
    (defun wtxt_l(txt p h);;;Write txt on graphic screen at p
    (entmake (list (cons 0 "TEXT") (cons 7 (getvar "textstyle")) (cons 40 h)(cons 72 1)(cons 11 p) (cons 1 txt) (cons 10 p))))
    (defun mid (ent / p1 p2)
    (vla-getboundingbox (vlax-ename->vla-object ent) 'p1 'p2)
    (setq p1 (vlax-safearray->list p1)
    			p2 (vlax-safearray->list p2)
    			pt (mapcar '+ p1 p2)
    			pt (mapcar '* pt '(0.5 0.5 0.5))
    )
    pt
    )
    (setvar "cmdecho" 0)
    (command "undo" "begin")
    (setq lacol (getvar "CEColor"))
    (setq ladin (getvar "dimzin")) 
    (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)
    (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" "_non" PT P2 P5 P3 "C" "pline" P1 P4 "")
    (wtxt_l "%¶ng thèng kª diÖn tÝch" P6 (* 1.2 h))
    (wtxt_l "STT" P7 h)
    (wtxt_l "DiÖn tÝch (m2)" P8 h)        
    (if (setq ptt1 (getpoint "\n Diem thu nhat canh 1 : "))(setq ptt2 (getpoint ptt1 "\n Diem thu 2 canh 1")))
    (if ptt2  (setq ptt3 (getpoint ptt2 "\n Diem thu 2 canh 2 :")))
    (while (and (/= ptt1 nil)(/= ptt2 nil)(/= ptt3 nil))
    (setq k (+ 1 k))
    (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
    (command "cecolor"4 ".rectang" "_non" ptt1 ptt3)(setq elast (entlast));; boundary	
    (command "area" "O" "L")
    (setq dt (* (getvar "area") tl tl 0.000001) tdt (+ tdt dt))
    (setvar "CEColor" lacol)
    (command "pline" "_non" PT P2 P5 P3 "C" "pline" "_non" P1 P4 "")
    (wtxt_l (rtos k 2 0) P7 h)
    (wtxt_l (rtos dt 2 2) P8 h)
    (wtxt_l (rtos k 2 0) (mid elast) h)	 
    (if (setq ptt1 (getpoint "\n Diem thu nhat canh 1 : "))(setq ptt2 (getpoint ptt1 "\n Diem thu 2 canh 1")))
    (if ptt2  (setq ptt3 (getpoint ptt2 "\n Diem thu 2 canh 2 :")))
    );while
    (setvar "DIMZIN" ladin)
    (command     "pline" "_non" P3 P9 P11 P5 "C" "pline" "_non" P10 P4 "")
    (wtxt_l "Tæng" P12 h)  
    (wtxt_l (rtos tdt 2 2) P13 h) 
    (command "undo" "end")
    (setvar "cmdecho" 1)
    )

    2. Đúng rùi bác a. chỉ cần dài x rộng thôi, cái preview bỏ qua cũng đc, bác đánh đấu vùng đã làm bằng số như lisp cũ là ok a. vị trí số này theo e nên để ở trung điểm cạnh thứ 1.

    - cái lisp sau e chạy đc 1 lần rùi nó báo:

     

    Command: bdt

     

    ty le ban ve < 1/1 >: 1/

     

    Cao text < 500.00 >:

     

    Chon diem xuat bang thong ke dien tich (mep trai):

    Diem thu nhat canh 1 :

    Diem thu 2 canh 1

    Diem thu 2 canh 2 :; error: no function definition: VLAX-ENAME->VLA-OBJECT


  19. Câu chăm chỉ mình cũng không dám nhận. Coding vội, còn nhiều thứ tiểu tiết bạn cứ nói mình thêm sau, giờ mần việc khác ^^

    (defun c:bdt(/ ptt1 ptt2 ptt3)
    (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
    (if (setq ptt1 (getpoint "\n Diem thu nhat canh 1 : "))(setq ptt2 (getpoint ptt1 "\n Diem thu 2 canh 1")))
    (if ptt2  (setq ptt3 (getpoint ptt2 "\n Diem thu 2 canh 2 :")))
    
    (while (and (/= ptt1 nil)(/= ptt2 nil)(/= ptt3 nil))
    (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
    (command "cecolor"4 ".rectang" ptt1 ptt3);; boundary	
    (command "area" "O" "L")
    (setq dt (* (getvar "area") tl tl) tdt (+ tdt dt)) 
    (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 dt 2 2))
    (if (setq ptt1 (getpoint "\n Diem thu nhat canh 1 : "))(setq ptt2 (getpoint ptt1 "\n Diem thu 2 canh 1")))
    (if ptt2  (setq ptt3 (getpoint ptt2 "\n Diem thu 2 canh 2 :")))
    );while
    
    (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)
    )

    Lisp chạy đúng nhưng còn 1 vài vấn đề:

    - mỗi lần chạy lệnh osnap đều phải chọn lại dù đã bật sẵn.

    - cách bắt 3 điểm chỉ làm đc khi điểm thứ 2 và 3 là điểm góc, em muốn chọn 2 điểm của cạnh 1 rùi tới 2 điểm của cạnh 2 riêng rẽ và 4 điểm đó có thể là 4 điểm bất kỳ thuộc 4 cạnh chứ không nhất thiết phải là điểm góc.

    - đơn vị tính đang là mm, bác chuyển kết quả về m giúp e và chỉ cần 2 số sau dấu phẩy thôi a.

    Em cám ơn bác.

×