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

    29

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


  1. Vẽ 1 đường Mline bằng hàm command thì có thể lấy record đối tượng của nó bằng bằng hàm entget.

    mình vẽ lại đường Mline đó bằng entmake theo record thu được ở trên thì vẫn vẽ được đối tượng bình thường. nhưng lạ ở chỗ không thể lấy được record của đối tượng mới này dù vẫn thu được ename bằng entsel. kết quả trả về nil.

    Cũng không có cách gì để tạo 1 Mline bằng entmake. Kết quả thu luôn là 1 dòng thông báo lỗi. cú thật <_<

    (entmakex '((0 . "MLINE")

    (100 . "AcDbEntity")

    (67 . 0)

    (8 . "0")

    (100 . "AcDbMline")

    (2 . "STANDARD")

    (40 . 20.0)

    (70 . 0)

    (71 . 1)

    (72 . 3)

    (73 . 2)

    (10 -501.575 84.252 0.0)

    (210 0.0 0.0 1.0)

    (11 -501.575 84.252 0.0)

    (12 0.957319 0.289032 0.0)

    (13 -0.289032 0.957319 0.0)

    (74 . 2)

    (41 . 0.0)

    (41 . 0.0)

    (75 . 0)

    (74 . 2)

    (41 . -20.0)

    (41 . 0.0)

    (75 . 0)

    (11 972.588 529.329 0.0)

    (12 0.310483 -0.950579 0.0)

    (13 0.462613 0.88656 0.0)

    (74 . 2)

    (41 . 0.0)

    (41 . 0.0)

    (75 . 0)

    (74 . 2)

    (41 . -27.9716)

    (41 . 0.0)

    (75 . 0)

    (11 1174.77 -89.686 0.0)

    (12 0.310483 -0.950579 0.0)

    (13 0.950579 0.310483 0.0)

    (74 . 2)

    (41 . 0.0)

    (41 . 0.0)

    (75 . 0)

    (74 . 2)

    (41 . -20.0)

    (41 . 0.0)

    (75 . 0)))


  2. Tôi đang gặp 1 bài toán xuất phát từ công việc: có n đường kín (kiểu LWPOLYLINE, CIRCLE, ELLIPSE) nằm bất kỳ. Làm sao để vẽ được đường bao ngoài cho tất cả các đường này (nếu tồn tại)?

    Hoặc vẽ được đường bao cho từng nhóm m đường (với m < n) khi m đường này có chung đường bao ngoài? Nhờ các cao thủ giúp. Xin cám ơn!

    Như thế này phải không?

    (defun c:vb ( / MakeRectang LST)
    (defun MakeRectang (PT1 PT2 Linetype LTScale Layer Color xdata)
    (entmakex (list '(0 . "LWPOLYLINE")
     '(100 . "AcDbEntity")
     (cons 8 (if Layer Layer (getvar "Clayer")))
     (cons 6 (if Linetype Linetype "bylayer"))
     (cons 48 (if LTScale LTScale 1))
     (cons 62 (if Color Color 256))
     '(100 . "AcDbPolyline")
     (cons 90 4)
     (cons 70 1)
     (cons 10 PT1)
     (cons 10 (list (car PT1) (cadr PT2)))
     (cons 10 PT2)
     (cons 10 (list (car PT2) (cadr PT1))))))
    (prompt "Chon cac doi tuong can ve duong bao")
    (setq LST (ACET-GEOM-SS-EXTENTS-FAST (ssget)))
    (MakeRectang (car LST) (cadr LST) nil nil nil nil nil)
    (princ))

    Chú ý: cái này vẽ đuờng bao cho mọi đối tuợng bất kỳ


  3. Sorry bà con!

    Tình hình là bị mất cái lisp trích dẫn đối tuợng ( copy đối tưọng trong vùng kín rồi lấy ra để trích dẫn chi tiết). Search hoài mà không thấy! Ai có repost dùm mình nhé!

    Thanks và hậu tạ 2 ly cà phê!

    Hình như nó chính là cái lisp của bác NguyenNdait ngay phía trên bài của bạn mấy bài đó. thử xem có đúng không

    @Ketxu: có 1 topic về các hàm acet đấy, bạn có thể tham khảo trong topic đó.


  4. Vâng ! cám ơn bác nhiều nhiều, bác cho em hỏi thêm chút đuowjc không ạ: để sử dụng lisp EDTN thì trước khi chạy nova thì phải có thêm bước NS nữa hả bác? nếu em copy bản vẽ từ máy khác rồi mang về chỉnh sửđuowcj không bác?nếu không chạy lệnh NS thì sẽ thế nào ạ??

    Không phải lúc nào nó cũng lỗi nếu không chạy lệnh NS. truờng hợp nỗi thỉnh thoảng mới xảy ra. thay vì hỏi lại mình như thế này sao bạn không thử chạy với truờng hợp như bạn vừa nêu để thấy kết quả? :undecided:

    • Vote tăng 1

  5. Bác nào viết giúp e lisp tạo group,xóa group, xóa tất cả các group một cách nhanh chóng với.Bình thường mỗi lần tạo cứ phải vào add, đặt tên rất phiền hà :undecided:(

    Không hiểu xóa group của bạn nghĩa là thế nào luôn. (xóa group trên bản vẽ hay là explode group)

    đây là lệnh tạo nhanh group. group được tạo là 1 group không tên. với chú thích Desgription là: thichhoabinh's Group. bạn có thể tìm thấy nó trong Group manager bằng cách pick chọn Include unnamed.

    (defun c:TG ()(ACET-GROUP-MAKE-ANON (acet-ss-to-list (ssget)) "thichhoabinh's Group"))

    • Vote tăng 1

  6. Như chuyện con rùa và con thỏ í

    Con rùa chạy thì nó thấy nó là số 1 rồi, nhanh nhất rồi, tụ xem mình là nhứt ... rồi

    Nhưng đối với con thỏ thì khác bác ạ ...

    Hê hê. Chuẩn men. bao nhiêu bài viết của bác cuối cùng cũng chốt về đuợc 1 câu này. :undecided:

    @ngocnam.cad: Lisp làm thưa trắc ngang mình đã post trong topic này rồi. Bạn chịu khó tìm trong khoảng 20trang trước trang này sẽ thấy

    Còn về việc sửa tên cọc: Nếu muốn làm theo cách của vuvuzela huớng dẫn thì bạn làm đến buớc 3.

    4. Mở file tuyen1.ntd bằng excel

    5. Ctrl+A, dùng công cụ Fitter để lọc lấy các dòng có giá trị mô tả ở cột đầu tiên là POLE

    (trong excel 2007 thì vào thẻ data. bấm nút Fitter -> bấm vào mũi tên ở ô A1 và bỏ chọn tất cả các mục trong đó chỉ để lại mục POLE)

    6. Giờ thì thích sửa thế nào tùy bạn

    Dùng cách này bạn có thể sửa tên cọc hàng loạt bằng các hàm của excel. cũng nhẹ nhàng hơn khi dùng nova nhiều. sửa xong lưu kết quả lại ở định dạng *.ntd.

    Hê hê, nhanh, gọn, nhẹ :leluoi:

    • Vote tăng 1

  7. bác í chỉ giỏi hút thuốc thôi, bít j mà hỏi (mà có trả lời cũng vòng vo chập bác mệt mỏi à)

    Phải hỏi tui nè. Cái vấn đề của bác cũng đơn giản thôi, không cần Lisp liết j cả đâu. Bác làm theo thứ tự tui bày nhé :

    1. Mở file Nova

    2. Bấm lệnh SSLT ==> ra hộp thoại nova

    3. Save as ra file khác ==> ví dụ tuyen1.ntd

    4. Mở file mới

    5. Bấm lệnh RTDN

    6. Mở lại file tuyen1.ntd ==> sửa tên cọc theo ý muốn cho nhẹ hều

    7. Save as hoặc save luôn file đó luôn

    8. Đổi tên xong ==> Bấm lệnh T ==> chạy nova ngon lành luôn

    Đảm bảo thành công 100%

    (nếu bác muốn nâng cao hơn nữa như tự động đổi tên cọc, xoá các điểm mia trên trắc ngang gần nhau quá thì liên hệ với tui .... $$$)

    Người ta muốn sửa hàng loạt mà bạn hướng dẫn người ta sửa thủ công

    Hê hê. không những giỏi hút thuốc, tớ còn biết là thà sửa bằng lệnh STC còn nhanh hơn cách làm của bạn đấy anh bạn "dân chuyên nghiệp" ạ <_<


  8. :undecided: bác Thaiztress giúp em được không ạ???

    không chỉ mình có thể giúp, nhiều người khác cũng có thể giúp bạn. nhưng bạn đưa cái đề bài thế kia thì biết giúp bạn kiểu gì?

    yêu cầu nêu rõ nhé:

    - Bạn dùng nova bản nào?

    - nguyên nhân nào khiến bạn phải đổi tên cọc, và phải đổi như thế nào?

    • Vote tăng 1

  9. Bác đệu thật.Thế mà cứ găm mãi.E vẫn dùng nó từ khi đi làm đến giờ đấy >"< ( 4 tháng rùi chứ ít ỏi j) .Thế pác post lên đi :">.

    P/S : lisp trên cũng bay text khi text chọn làm mẫu không thuộc tập chọn ban đầu,n được cái tốt là Mờ tếch mờ tiếc k bị thay đổi format ^^

    Hề hề, Lisp mình viết thì mình luôn sẵn lòng chia xẻ, nhưng những lisp của anh em trong cty viết thì mình chịu rùi, bọn nó chém mình lun á :undecided:


  10. hehe, lisp trên là 1 trong mấy lisp đầu tay của mình ở cadviet. toàn dùng hàm command để move text nên nó chậm là đúng rùi. với lại nó sảy ra lỗi khi dùng cho các loại text và Mtext có thuộc tính annotative (bản vẽ cty mình toàn text loại này) nên mình bỏ nó chẳng buồn sửa nữa. lười viết lại nên giờ chuyển qua dùng lisp của cty :undecided:


  11. Chào bạn Nam.cad

    Bạn viết dùng stc : phải chăng Stc là sửa Thủ Công ???

    Còn bằng sslt -> Chịu, không hiểu được :undecided:

    Bạn nên trình bày, minh họa rõ hơn điều mình nói bằng file .dwg thì may ra có thể giúp được.

    Bạn cần tránh, không nên viết những yêu cầu bằng những từ viết tắt nhé. Vì để mọi người dễ hiểu hơn, và có thiện cảm với bài viết của bạn hơn.

    Bạn nên trình bày rõ ràng hơn, vì nếu viết như bài viết trên thì chắc có lẽ các bác mà đã từng sử dụng NOVA mới hiểu được bạn muốn gì?? Và cũng có lẽ là không hiểu được ???? :leluoi:

    Đây là các lệnh của phần mềm thiết kế đuờng Nova bác ạ.

    SSLT: sửa số liệu tuyến

    STC: sửa tên cọc.

    @Nam.cad: tuyến của bạn quá dài, vậy thì trên đó chắc không chỉ có các cọc lý trình bình thuờng mà còn có các cọc đặc biệt như các cọc trong đuờng cong, cọc H, cọc đánh dấu vị trí cống và các công trình đặc biệt trên tuyến. Đổi hàng loạt kiểu gì? Bảo sếp bạn đầu tư máy xịn đê


  12. Cái này mình viết hồi mới tập tọe Lisp, dùng có mấy lần rồi chẳng bao giờ dùng nữa. có thể có những lỗi người viết không lường trước vì hồi đó còn gà. Nếu dùng nó gặp lỗi gì thì thông báo lại để mình sửa.

    ;===========================================================================
    (prompt"\nCmd:SRT- [Cong-Tru-Nhan-Chia 2 hang TEXT] by Thaistreetz - huuthais@yahoo.com\n")
    ;===========================================================================
    (defun c:srt (/ cmd ss lst data i lst1 lst2)
    (setq ctnc (cond (ctnc) ("Cong")))
    (initget "Cong Tru Nhan CHia")
    (setq ctnc (cond ((getkword (strcat "\nChon phep tinh: [Cong/Tru/Nhan/CHia/] <" ctnc ">"))) (ctnc)))
    (setq cmd (getvar "cmdecho"))
    (setvar "cmdecho" 0)
    (command "ucs" "world")
    (prompt"\nChon hang-cot text thu nhat\n")
    (if (setq ss1 (ssget (list (cons 0 "TEXT"))))
    (progn
    (setq lst1 (vl-sort (mapcar 'entget (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss1))))
    		   '(lambda (x y) (if (equal (car(setq x1 (cdr (assoc 10 x)))) (car(setq y1 (cdr (assoc 10 y)))))
    				      (> (cadr x1) (cadr y1)) (< (car x1) (car y1))))))))
    (prompt"\nChon hang-cot text thu 2\n")
    (if (setq ss2 (ssget (list (cons 0 "TEXT"))))
    (if (< (- (cadr (cdr(assoc 10 (nth 0 lst1)))) (cadr (cdr(assoc 10 (nth 1 lst1))))) 
                    (- (car (cdr(assoc 10 (nth 1 lst1)))) (car (cdr(assoc 10 (nth 0 lst1))))))
    	(setq lst2 (vl-sort (mapcar 'entget (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss2))))
                           '(lambda (x y) (if (equal (car(setq x2 (cdr (assoc 10 x)))) (car(setq y2 (cdr (assoc 10 y)))))
                            (> (cadr x2) (cadr y2))  (< (car x2) (car y2))))))
    	(setq lst2 (vl-sort (mapcar 'entget (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss2))))
                           '(lambda (x y) (if (equal (car(setq x2 (cdr (assoc 10 x)))) (car(setq y2 (cdr (assoc 10 y)))))
                            (< (cadr x2) (cadr y2)) (> (car x2) (car y2))))))
    	))
    (if (/= (sslength ss2) (sslength ss1)) (alert "\n    Hai tap hop text co so \ndoi tuong khong bang nhau!")
    (progn
     (setq ptkq (getpoint "\nChon diem ghi ket qua hoac enter de ghi ket qua vao hang-cot text khac\n"))
     (if (= ptkq nil) 
     (progn
    (prompt"\nChon hang-cot text ghi ket qua\n")
    (if (setq ss3 (ssget (list (cons 0 "TEXT"))))
    (progn
    (setq lst3 (vl-sort (mapcar 'entget (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss3))))
    		   '(lambda (x y) (if (equal (car(setq x3 (cdr (assoc 10 x)))) (car(setq y3 (cdr (assoc 10 y)))))
    				      (> (cadr x3) (cadr y3))  (< (car x3) (car y3))))))))
    (if (/= (sslength ss2) (sslength ss3)) (alert "\nTap hop text ghi ket qua \nthua hoac thieu doi tuong!"))
     );progn
     );if
    );progn
    );if
    ;----------------------------------
    (command "undo" "be")
    (setq angbs (getvar "angbase"))
    (setq oldos (getvar "osmode"))
    (setq Ladim (getvar "Dimzin"))
    (setq olstyle (getvar "textstyle"))
    (setq olcol (getvar "CEColor"))
    (setvar "Dimzin" 0)
    (setq txti 0)
    
    (while (< txti (sslength ss1))
    (if (eq ctnc "Cong") (setq kqi (+ (atof (cdr(assoc 1 (nth txti lst1)))) (atof (cdr(assoc 1 (nth txti lst2)))))))
    (if (eq ctnc "Tru")  (setq kqi (- (atof (cdr(assoc 1 (nth txti lst1)))) (atof (cdr(assoc 1 (nth txti lst2)))))))
    (if (eq ctnc "Nhan") (setq kqi (* (atof (cdr(assoc 1 (nth txti lst1)))) (atof (cdr(assoc 1 (nth txti lst2)))))))
    (if (eq ctnc "CHia") (setq kqi (/ (atof (cdr(assoc 1 (nth txti lst1)))) (atof (cdr(assoc 1 (nth txti lst2)))))))
    (if ptkq
     (progn
     (if (< (- (cadr (cdr(assoc 10 (nth 0 lst1)))) (cadr (cdr(assoc 10 (nth 1 lst1))))) 
        (- (car (cdr(assoc 10 (nth 1 lst1)))) (car (cdr(assoc 10 (nth 0 lst1)))))) 
     (setq ptkqi (list (car (cdr(assoc 10 (nth txti lst1)))) (cadr ptkq)))
     (setq ptkqi (list (car ptkq) (cadr (cdr(assoc 10 (nth txti lst1)))))))
     (command "textstyle" (cdr(assoc 7 (nth txti lst1))) "osmode" 0 "angbase" 0 "color" 1)
     (command "text" ptkqi (cdr(assoc 40 (nth txti lst1))) (/ (* 180 (cdr(assoc 50 (nth txti lst1)))) pi) (rtos kqi 2 2))
     );progn
     (entmod (subst (cons 1 (rtos kqi 2 2)) (assoc 1 (nth txti lst3)) (nth txti lst3)))
    );if
    (setq txti (1+ txti))
    );while
    ;----------------------------------
    (command "ucs" "p")
    (setvar "textstyle" olstyle)
    (setvar "Dimzin" Ladim)
    (setvar "CECOLOR" olcol) 
    (setvar "angbase" angbs)
    (setvar "osmode" oldos)
    (command "undo" "e")
    (setvar "cmdecho" cmd)
    (princ)
    )
    

    • Vote tăng 2

  13. Gửi mọi người bản Crack hai chương trình TVPLOT và DHPLOT, mọi người dùng xong cho ý kiến nhé!

    TVPLOT: http://www.mediafire.com/file/ywdwagzgztdh/TVPlot.rar

    DHPLOT: http://www.mediafire.com/file/mjx2zvladtayy/DHPlot.rar

    Ẹc. hóa ra mấy cái phần mềm in ấn này là khoe hàng à? mềnh lại cứ tưởng các bác ấy share miễn phí chứ.

    Hay thật. dạo này cái box AutoLisp này bỗng nhiên trở thành cái chợ quảng cáo rao vặt thì phải. rồi thì vài bác lại lấy đây làm nơi thể hiện bản thân để thỏa mãn thói vĩ cuồng nữa chứ. haiz!

    Thế mới biết những gì mà các bác Hoành, Gia Bach, Duy, Thanh Bình, Tue_NV, NgocTu đã và đang làm thật đáng để mọi người trân trọng.


  14. Bạn vào đây. Ngay trên diễn đàn mình cũng có mà. Vào phần đồ nghề

    http://www.cadviet.com/download/onlinesoft.php?w=acad_quiz

    Bác nào làm cái quiz này thế?

    hê hê? đố ai trả lời được đúng 10/10

    Bạn trả lời được 8/10

    Câu 1

    Câu hỏi: Phím nào dùng để gọi lệnh UNDO:

    Đáp án: Ctr+Z

    Kết quả: bạn trả lời sai là Ctr+Z

     

    .....

     

     

     

    Câu 4

    Câu hỏi: Lệnh gì để scale một viewport?

    Đáp án: Scale

    Kết quả: bạn trả lời sai là Scale

     

    .....


  15. PhanThanhTu cho mình hỏi. Có cách gì để có thể sử dụng hộp thoại vba thay cho DCL của lisp được không? nghĩa là chương trình vẫn chạy bằng lisp nhưng sử dụng hộp thoại tạo bằng VBA.

    ý tưởng của mình thế này:

    gõ 1 lệnh -> load hộp thoại được xây dựng bằng VBA -> đóng hộp thoại sẽ thu được giá trị trả về là 1 list chứa các giá trị cần thiết -> chạy code lisp với các tham số là các giá trị thu được trong list đó.

    Thực sự DCL của autolisp quá yếu và quá nhiều hạn chế


  16. @790312 và 1 số member mới tham gia diễn đàn: các bạn nên để ý 1 chút về các topic được stick lên thành nhóm các topic đáng xem. bản thân tên các topic đó đã nói lên nội dung của nó. những câu hỏi dạng này các bạn nên post vào đúng chỗ của nó thì hay hơn là lập topic mới vô tội vạ thế này. mỗi khi đặt câu hỏi các bạn đừng chỉ quan tâm đến kết quả mà mình nhận được. Một chút thôi, hãy ý thức đươc trách nhiệm của mình trước cộng đồng trong mỗi việc mình làm, dù nhỏ.


  17. Hê hê Bác Bình già nên lẫn rồi đường polyline entity type là LWPOLYLINE.

    Chớ vội cười. Không phải Bác Bình lẫn, mà kiến thức của bạn chưa đủ.

    Có 2 loại đường Pline

    - Polyline (loại này lại được chia thành 2 loại 2D và 3D) là loại đường pline kiểu cũ, được tạo ra bởi các bản cad đời thấp.

    - LWpolyline (loại này mình chưa biết có chia thành 2 loại như trên không vì chưa kiểm tra) Có lẽ do cách mô tả record đối tượng của pline loại cũ gặp 1 số hạn chế khi sử dụng nên các bản cad đời mới đưa ra loại pline mới này. nhưng đồng thời vẫn hỗ trợ loại pline kiểu cũ. ta không thể tạo ra Polyline bằng cách vẽ bằng lệnh PL mà chỉ có thể vẽ được LWPolyline trên các bản cad đời cao. có lẽ Bác Bình không sử dụng các bản cad đời mới nên không bít cái này. Tuy vậy ta vẫn có thể tạo Polyline kiểu cũ bằng hàm entmake trên các bản cad đời mới.

    • Vote tăng 2

  18. Không hiểu ý của bạn?

    Thế nào là tất cả đã bị đánh dấu xóa (đã bị xóa khỏi bản vẽ nhưng tên tuổi vẫn còn)

    Bạn vui lòng nói rõ hơn nhé?

    Theo em hiểu thì các đối tượng trong bản vẽ khi bị xóa bằng lệnh erase sẽ không bị loại khỏi cơ sở dữ liệu của bản vẽ cho đến khi ta đóng bản vẽ lại (toàn bộ liệu này được ghi ra 1 file tạm nằm trong %temp% - có lẽ để phục vụ cho lệnh undo) Điều đó có nghĩa là toàn bộ record của đối tượng được bảo toàn nguyên vẹn và không một đối tượng nào tạo mới sau đó được phép có record (cụ thể là các giá trị mô tả Handle và ename của đối tượng) trùng với record của các đối tượng đã bị xóa. các đối tượng đó được gọi là đối tượng bị đánh dấu xóa như cách gọi ở trên

    @Doan van Ha: các hàm SSDEL, SSADD có lẽ thỏa mãn nhu cầu của bạn


  19. Dù chương trình chuyến sang in ấn bên layout nhưng mỗi lần in bên layout chỉ có một bản vẽ nên không làm nặng bản vẽ đâu! Bạn cài chương trình lên dùng thử sẽ thấy điều này!

    Theo mình thấy thì đa số người dùng muốn in trắc ngang bên model bạn ạ. Việc sắp xếp trắc ngang vào khung in bên model tiện cho việc quản lý bản vẽ, đánh số thứ tự bản vẽ và có thể tạo được mục lục bản vẽ dễ dàng.

    Bạn in bên layout sẽ khó khăn cho việc đánh số thứ tự bản vẽ. Cho dù bạn có thể giải quyết được việc này bằng việc đánh lại số thứ tự khung in qua mỗi lần in thì điều đó cũng sẽ làm chậm quá trình in ấn. hoặc giả sử bạn cần fải in lại 1 bản vẽ trắc ngang nào đó. sẽ khó khăn để bạn biết chính xác số thứ tự của nó là bao nhiêu


  20. Theo mình biết thì lisp không hỗ trợ việc mở file *.chm bạn ạ.

    Không những mở được CHM mà lisp còn có thể mở được rất nhiều định dạng file khác mà Hệ điều hành có thể hiểu được bác ạ. Em nhớ có lần tra cứu chức năng các hàm em đã thử dùng 1 hàm để open 1 file jpg và sử dụng chính hàm đó để khởi động 1 phần mềm nghe nhạc trong máy. rất tiếc em không nhớ đã lấy hàm đó ở đâu và bây giờ em không có cad để test. để hôm nào về cty em kiểm tra lại

    • Vote tăng 1
×