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

saigonnew

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

    19
  • Đã tham gia

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

  • Ngày trúng

    1

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


  1. Vào lúc 10/5/2013 tại 13:28, lyky đã nói:

    Bạn có thể phản xạ cho các trường hợp khác bằng một đoạn code đơn giản sau:

    
     
    (defun C:DSL (/ loaio) (if (not loai) (setq loai 0))   ;;; Dem So Luong ;;;
    (setq loaio loai loai (getint (strcat "\nLoai 1:Line;2:Text;3:Dimension;4:Block;5:Circle;6:Polyline;7:Arc:[" (itoa loai) "]")))
    (cond
      ((= loai 1) (prompt (strcat "\nTong so LINE la:"      (itoa (sslength (ssget '((0 . "LINE"))))) "\n")))
      ((= loai 2) (prompt (strcat "\nTong so TEXT la:"      (itoa (sslength (ssget '((0 . "TEXT"))))) "\n")))
      ((= loai 3) (prompt (strcat "\nTong so DIMENSION la:" (itoa (sslength (ssget '((0 . "DIMENSION"))))) "\n")))
      ((= loai 4) (prompt (strcat "\nTong so INSERT la:"    (itoa (sslength (ssget '((0 . "INSERT"))))) "\n")))
      ((= loai 5) (prompt (strcat "\nTong so CIRCLE la:"    (itoa (sslength (ssget '((0 . "CIRCLE"))))) "\n")))
      ((= loai 6) (prompt (strcat "\nTong so POLYLINE la:"  (itoa (sslength (ssget '((0 . "LWPOLYLINE"))))) "\n")))
      ((= loai 7) (prompt (strcat "\nTong so ARC la:"       (itoa (sslength (ssget '((0 . "ARC"))))) "\n")))))
    ;;; Neu muon mac dinh "ALL" bo xung them "X" sau ssget ;;;

     

    Goodluck!

     

    P/S: úi chà, mình nhầm!!!

    Bạn nên up file CAD lên trực tiếp cho dễ hiểu bạn à!

    sao lisp này không xài được nhỉ, Load vào máy báo error: syntax error

    • Vote giảm 1

  2. Vào lúc 11/6/2021 tại 11:25, lanvientkh đã nói:

    Chào bạn,

    Mình có mong muốn sau:

    1. Có thể đếm được tổng số lượng đối tượng

    2. Ghi thứ tự từng số đếm của đối tượng để có thể kiểm tra phụ kiện nào bị sót chưa đếm (tạo 1 layer mới số đếm này để dễ quản lý)

    3. Có thể lọc đối tượng theo Layer, màu, polyline...

    Cảm ơn các bạn.

    Đếm đối tượng.dwg

    Mình cũng đang hóng Lisp này các bác @ketxu @Doan Van Hagiúp một tay được không bạn ơi 

    • Like 1

  3. Vào lúc 17/9/2019 tại 16:33, dieptp đã nói:

    Có 2 lệnh, tùy trường hợp sử dụng. Chuyển các đối tượng (kể cả lồng nhau) về layer 0. Có thể quét nhiều một lúc

    BL0,BL00_ change all objects in selected blocks to layer 0 (light).lsp

    BL0 xài rất tôt còn BL00 vẫn ko quét được hết các block nhé bạn


  4. Đối với những người thường dùng Xref để quản lý bản vẽ, thật khó chịu nếu bị mất các đường dẫn nên phải load lại rất phiền phức. Điều này hay xảy ra với các bản vẽ không phải do chính bạn tạo ra. Có thể do tác giả không sử dụng Projectname, có thể do Saved path bị thay đổi... Bạn dễ dàng khắc phục điều này bằng Reference Manager có trong Autocad :

     

    1. Bạn vào Reference Manager như sau

     

    22884706oe8.jpg

    w694.png

     

    2. Chọn Add drawings để mở các bản vẽ bạn muốn chuẩn hóa cheers.gif

     

    37015205no0.jpg

    w941.png

     

    3. Chọn tất cả những yếu tố liên quan của các bản vẽ ở cột bên phải rồi bấm vào Edit selected paths. Bạn chọn đường dẫn cần thiết nơi đặt các file Xref hoặc để trống nếu muốn sử dụng chế độ No path cho các Xref. Điều này tùy vào mục đích cá nhân vì mỗi cách có ưu, khuyết điểm khác nhau

     

    73621157hw0.jpg

    w823.png

     

    4.Bấm Apply changes để xác nhận và chọn Yes to all nếu cần thiết. Chọn thêm Export report nếu bạn muốn ghi biên bản để xuất ra Excel

     

    94218807pl1.jpg

    w824.png

    mất hình rồi ko xem được, bạn có thể hướng dẫn lại được ko? thnaks


  5. Sử dụng bộ Reference Manager trong bộ cài đi cùng CAD sẽ repath all file cần thay. ^_^

    Ý mình ko phải vậy bạn ơi, tư vấn gửi bản vẽ qua cho mình nhưng máy mình mất xref phải dẫn lại từng bản rất lâu, trước đây mình đã xài cái này rồi gần giống như bind nhiều xref hàng loạt bản vẽ vậy, nhưng giờ quên mất tiêu, nhờ bạn nào chỉ lại mình với, thanks all


  6. Không biết bạn theo lisp đã lâu chưa, mà toàn đặt ra những câu hỏi khó. Nếu còn khó nữa thì chắc tôi phải nhờ trợ giúp của khán giả hoặc gọi điện thoại cho người thân thôi!

    1) Bởi bạn chỉ cần gom tất cả file lisp vào 1 folder. Sau đó viết hàm load tất cả folder này. Và sau đó nữa là add file chứa hàm này vào contents là xong.

    
    

    Bạn Hà, cách viết hàm load tất cả folder và add file bằng cách nào vậy, nhờ bạn viết hàm này cho mình tham khảo với


  7. Không được bạn à. Hàm Load chỉ load 1 file có tên tuổi rõ ràng như Tue_NV đã phân tích ở bài viết số 2.

    Vì thế để Load các file thì bạn phải có 1 danh sách (List) chứa đường dẫncác file .lsp, .vlx , cách tạo ra một List danh sách này như bác ssg đã trình bày

     

    Sau khi có 1 danh sách (List) chứa đường dẫn các file .lsp, .vlx -> bạn nghiên cứu sử dụng hàm foreach duyệt qua từng phần tử của List này và qua mỗi phần tử trong List -> bạn sử dụng hàm Load để Load chúng

     

    Hãy đọc thật kỹ lại bài của bác ssg. Nó là chìa khoá để bạn giải quyết thành công bài toán này đấy

    Chúc bạn thành công tongue2.gif

    Bạn Tue_NV ơi,

    Có thể cho một ví dụ về cách tạo list danh sách các file .lsp, vlx và kết hợp với hàm foreach như bạn nói được ko, đang tìm hiểu nhưng bí quá, cảm ơn bạn


  8. mình thấy không cần lisp vẫn được mà, bạn xem file cad mình đính kèm xem đúng ý bạn chưa, chon vào block mà bạn tạo, click sổ mủi tên xuống và chọn đường kính của ống.

     

    https://drive.google.com/file/d/0Bw5ZlXvjRgHLeVR6NWY2MFVTNTA/view?usp=sharing

    uhm block động này thì nhiều người biết rồi bạn,có bộ lisp sử dụng vẫn hay hơn chứ bạn khanhphong


  9. Mình muốn sửa cái lisp đường kính ống này bằng cách tạo thành block mặt cắt ống, nhưng chưa làm được, nhờ cao thủ nào giúp một tay vậy

     

    (DEFUN c:pipe ( / CNT DIAM INCH P1)
     
    (setq P1 (entsel "\nSelect an object to create the circle in the same layer: "))
    (setq CNT (getpoint "\nSelect circle center")) ;click the center of the circle
     
    (initget 1 "15 20 25 32 40 50 65 80 100 125 150 200 250")
     
    (setq INCH (getkword "\nSelect Diameter: [15 / 20 / 25 / 32 / 40 / 50 / 65 / 80 / 100 / 125 / 150 / 200 / 250]"))
     
    (setq DIAM (cond ((= INCH "15") 21.34)
    ((= INCH "20") 26.67)
    ((= INCH "25") 33.4)
    ((= INCH "32") 42.16)
    ((= INCH "40") 48.26)
    ((= INCH "50") 60.33)
    ((= INCH "65") 73.03)
    ((= INCH "80") 88.9)
    ((= INCH "100") 114.3)
    ((= INCH "125") 141.3)
    ((= INCH "150") 168.28)
    ((= INCH "200") 219.08)
    ((= INCH "250") 273.05)
    );End conditional
    ) ;End setq DIAM
     
    (command "laymcur" P1) ; to move in other layer with a select
    (command "circle" "_non" CNT "D" DIAM) ;draw the circle
    (command "layerp") ; return in the original layer
     
    (PRINC)
    )

  10. Xin nói đôi lời với bạn LanVien:

    - Lisp là lisp "Free" , viết lisp nó cũng "bạc" lắm, các anh chị trên diễn đàn có được hưởng ít xu nào để viết lisp cho mọi người dùng đâu? Mọi người viết vì lòng đam mê với sự khô khan của môn kỹ thuật này thôi.

    Thế nên nếu bạn dùng lisp có chỗ không hài lòng vì vài vấn đề cỏn con thì hãy tự thỏa mãn với chính mình đi. Chứ đừng có yêu cầu thêm thắt mấy thứ vào lisp trong khi bạn làm được rất dễ dàng, vừa đỡ mệt cho ai phải trả lời câu hỏi cho bạn. < Thật sự là ai đọc yêu cầu trên của bạn cũng chẳng có hứng thú giúp bạn đâu >

    - Nếu có thời gian thì bạn tự học lisp. Mọi người rất quý ai đó ham học hỏi kiến thức, chứ ko ai mến người suốt ngày yêu cầu nọ kia. Thân gửi...  : )

    bạn ấy cần thì bạn ấy nhờ thôi, ai đam mê giúp bạn và nhiều khác nếu cần, ai chẳng muốn học nhưng sg chỗ nào dạy bạn chỉ xem

×