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

thietke08

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

    25
  • Đã tham gia

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

  • Ngày trúng

    1

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


  1. cảm ơn mọi người, bữa giờ em không có thời gian vào lại diễn đàn, e cũng có tìm được một lisp đưa text vào thay cho giá trị của attribute như bên dưới. có điều nó hơi thủ công.

     

    (defun c:t2a ( / ss pt ent txt oldsnap)
    (while (setq ent (nentsel "Pick Attribute"))
    (setq pt (cadr ent))
    (setq tag (cdr (assoc 2  (entget (car ent)))))
    (setq ent (entsel "pick text"))
    (setq txt (cdr (assoc 1  (entget (car ent)))))
    (setq oldsnap (getvar 'osmode))
    (setvar 'osmode 0)
    (setq ss (ssget pt))
    (foreach att (vlax-invoke (vlax-ename->vla-object (ssname SS 0 )) 'getattributes)
            (if (= tag (strcase (vla-get-tagstring att)))
            (vla-put-textstring att txt)
            )
    )
    )
    (setvar 'osmode oldsnap)
    (princ)
    )

     

    • Vote giảm 1

  2. Nhờ anh em giúp với, hiện mình có lisp này để tạo layer, nhưng hiện tại nhập lệnh phải qua 2 lần, như bên dưới phải nhập QQ rồi Q mới tạo layer được.

    Nhờ anh em chỉnh về chỉnh nhập QQ là nó chạy lệnh luôn. Cảm ơn nhiều.

     

    ;-------------------------------------------------------------------------
    ; *** START MAIN FUNCTION ***
    ;-------------------------------------------------------------------------
    
    (defun c:QQ ()
    
    	(setq a
    	   (strcase (getstring "\nChoose Layer group to load [Q] <Q>")
    	   );strcase
    	);setq
    	(cond
    		((= a "Q") (CLAYLA))
    
    	);cond
        (princ)
     (princ)
    ); _end defun, LAY
    
    
    ;-------------------------------------------------------------------------
    ; *** LAYERS ***
    ;-------------------------------------------------------------------------
    
    (defun CLAYLA (/ LayerList)
    (setvar "cmdecho" 0)
    
    ; LAYER NAME:		COLOR:	LINETYPE:	DESCRIPTION:
    (setq LayerList '
    	(
    	("0"	7	"Continuous"	"VNLA")
    	("DEFPOINTS"	9	"Continuous"	"VNLA")
    	("R-REVISION-DEF"	9	"Continuous"	"KTV Old Revision")
    	("A-BLDG" 8 "Continuous" "VNLA - Cong trinh")
    	("A-BLDG-PROP" 2 "Continuous" "VNLA - Ranh cong trinh")
    	("A-BLDG-HTCH" 9 "Continuous" "VNLA - Hatch cong trinh")
    	("A-COLUMN" 2 "Continuous" "VNLA - Cot KT")
    
     )
    )
    
    ; SEND LAYER LIST TO "Processlayers" FUNCTION.
    (ProcessLayers)
    (command "-layer"	"p"	"n"	"L-VIEW-VP" "")
    
    (alert "VNLA LAYERS HAVE BEEN ADDED SUCCESSFULLY!")
    (setvar "cmdecho" 1)
    (setvar "clayer" "0")
    
    
    ); _end defun, CLAYL
    
    
    ;-------------------------------------------------------------------------
    ; *** LANDSCAPE LAYERS ***
    ;-------------------------------------------------------------------------
    
    ;-------------------------------------------------------------------------
    ; *** PROCESS ALL LAYERS ***
    ;-------------------------------------------------------------------------
    
    (defun ProcessLayers (/ doc LayerCollection)
    
    (vl-load-com)
    
    ; SETQ "DOC" TO THE ACTIVE DOCUMENT.
    (setq doc (vla-get-ActiveDocument (vlax-get-Acad-Object)))
    
    ; GET THE "LAYER COLLECTION".
    (setq LayerCollection (vla-Get-Layers doc))
    
    ; CREATE ALL LAYERS AND ASSIGN COLOR, LINETYPE AND DESCRIPTION.
    (mapcar '(lambda (x)
     (setq NewLayer (vla-add LayerCollection (nth 0 x)))		; CREATE A NEW LAYER.
     (vla-put-color NewLayer (nth 1 x))				; ADD A COLOR TO THE LAYER.
    
     (if (not (tblobjname "ltype" (nth 2 x)))			; IF LINETYPE DOESN'T EXIST, LOAD IT. (STANDARD ACAD LINETYPES)
      (vla-load (vla-Get-Linetypes doc) (nth 2 x) "acad.lin")
     ); _end if
     (vla-put-linetype NewLayer (nth 2 x))				; ADD A LINETYPE TO THE LAYER.
     (vla-put-Description NewLayer (nth 3 x))			; ADD A DESCRIPTION TO THE LAYER.
     ); _end lambda
    
     LayerList							; LAYER LIST.
    ); _end mapcar
    
    ); _end defun, ProcessLayers

     


  3. Vào lúc 15/4/2022 tại 22:16, huunhantvxdts đã nói:

    Lệnh "-INSERTCONTENT" có từ cad bao nhiêu nhỉ sao cad mình không có 

    mình thì dùng lệnh insert như sau:

    (command "INSERT" (strcat "C:" "\\TND\\dwg\\TND_huongchay1") (list 0 0) 1 1 0)

     

    Thanks bạn. Mình sử dụng cad 2021 nó có lệnh này, nó chèn block có  trong bản vẽ nguồn luôn, không chèn cả bản vẽ.


  4. Hiện mình đang tạo lisp để chèn một block trong một bản vẽ có chứa các block thư viện bằng lệnh -INSERTCONTENT tuy nhiên nó báo lỗi không thực hiện được như nhập lệnh trực tiếp trong CAD.

    Nhờ mọi người biết cách sửa giúp và chèn thêm điểm chèn bằng cách pick điểm trên bản vẽ. Xin cảm ơn.

     

    Lisp hiện tại là 

    ;INSERT BLOCK LAYER
    (defun c:IB	()	(command "-INSERTCONTENT"	""U:\04 CAD\05 DIGITAL LIBRARY\K_LSTEAM-TEMPLATE 2022.dwg"" "K-LA-LAYER-DIM-TABLE-LEADER"	"0,0" "0" "1"))

     


  5. Xin chào mọi người, hiện tại công viêc em có nhiều lúc phải sử dụng lệnh (command ".ucs" "z") rồi vẽ đường trục x để sử dụng lệnh (command "plan" "c"). Em đang muốn gộp 2 lệnh trên thành 1 nhưng chưa biết gộp sao, do khi thực hiện lệnh đầu tiên nó bắt phải vẽ đường ngang rồi mới tiếp tục lệnh thứ hai.

    Xin mọi người giúp đỡ, thanks nhiều.

     

    image.png.fd9b2139200ea80ee075c489dfa16161.png


  6. 7 phút trước, Doan Nguyen Van đã nói:

    Bạn dùng cái này cho nhanh nhé:

    
    (defun c:te (/ x i)
      (foreach x (acet-ss-to-list (ssget ))
        (if (not i) (setq i 1) (setq i (1+ i)))
    	    (if (< i 257) (progn (if (not (tblsearch "LAYER" (itoa i)))
    (entmake   (list     (cons 0 "LAYER") (cons 100 "AcDbSymbolTableRecord")  (cons 100 "AcDbLayerTableRecord")  (CONS 2 (itoa i))  (CONS 62 I) (CONS 70 0)
              )))(vla-put-layer (vlax-ename->vla-object x) (itoa i)))))
    	  )

     

    Thanks, bạn cho mình hỏi muốn tìm hiểu lisp thì tìm tài liệu ở đâu, mình xem qua vài cái mà nó hơi rối.

    Bạn có mình xin lisp tạo layer từ 1-255 với màu từ 1-255 được không?


  7. 4 giờ trước, Doan Nguyen Van đã nói:

    Viết mò, k biết đúng ý chủ thớt không

    
    (defun c:te (/ x i)
      (foreach x (acet-ss-to-list (ssget (list (cons 0 "*LINE"))))
        (if (not i) (setq i 1) (setq i (1+ i)))
    	    (if (< i 257) (progn (if (not (tblsearch "LAYER" (itoa i)))
    	       (COMMAND "-LAYER" "M" (itoa i) "C" (itoa i) "" "" ""))
    	      (vla-put-layer (vlax-ename->vla-object x) (itoa i)))))
    	  )

     

    Đúng rồi, mà nó chạy hơi lâu.

    Thanks bạn nhiều.


  8. 2 giờ trước, duy782006 đã nói:

    -Thứ tự theo kiểu gì?

    -Thực hiện lisp 2 lần thì sao tính gộp hay tính lại?

    -Rồi khi nhiều hơn 255 đối tượng thì làm nào?

    -.................???

     

     

    Đối tượng em sẽ giới hạn dưới 255 đối tượng, mỗi đối tượng: line, polyline, circle sẽ là từng layer riêng lẽ không trùng nhau.

     

    1 giờ trước, quansla đã nói:

    Công việc của bro là gì thế, đổi layer để tính toán riêng lẻ, hay trích dẫn à

     

    ý của anh Duy là

    1. Lisp có thể lọc được 1 tập đối tượng do người dùng chọn, sau đó set (cài đặt) cho mỗi đỗi tượng thuộc 1 layer khác nhau, tên layer từ 1-255, kể cả thiết lập màu cũng được

     

    Nhưng:

    1. Nếu tập đối tượng chọn >255 thì set màu gì tiếp theo

    2. Thứ tự set layer như thế nào, ví dụ cái ở trên thì có layer nhỏ, cái bên trái hơn thì có layer nhỏ hơn; hay kể cả set từ 1-100; set từ 44-133;..... quá nhiều chưa rõ

     

    cần gửi file nên nhé, 

    Layer có thể không theo thứ tự gì, E đổi layer để import vào revit tạo sàn thôi.

     

    Em có gửi kèm file kết quả e mong muốn.

    MATERIAL - T1.dwg


  9. Chào mọi người, hiện tại em tìm kiếm lisp có thể đổi các đối tượng thành các layer khác nhau, như trong hình là mỗi polyline sẽ là một layer, layer được đánh số từ 1 đến 255 với màu tương ứng.

    Em tìm mà vẫn chưa thấy nên mọi người có thì cho e xin lisp này, vì em đổi thủ công là rất lâu.

    Em cảm ơn.

     

    image.thumb.png.c8a8f33dbe4098b7d4e32ce219c5a996.png


  10. Vào lúc 30/11/2016 tại 14:10, nhunha_pro279 đã nói:

    Bác Nguyễn Hoàng ơi làm sao để chuyển được về dạng thông báo tiếng việt như trong file lisp của bác vậy ạ:

    (alert "\u+0110\u+00E3 ho\u+00E0n t\u+1EA5t thi\u+1EBFt l\u+1EADp \u+0111\u+1EC3 AutoCAD nh\u+1EB9 h\u+01A1n\nB\u+1EA1n \u+0111\u+00E3 c\u+00F3 th\u+1EC3 s\u+1EED d\u+1EE5ng AutoCAD nh\u+1EB9 h\u+01A1n m\u+00E0 kh\u+00F4ng c\u+1EA7n l\u+00E0m th\u+00EAm g\u+00EC n\u+1EEFa." )

    )
    Kính mong Bác chỉ giáo!

     

    https://www.compart.com/en/unicode/block/U+1E00

    Mình tìm được trang web này để tham chiếu tiếng việt sang charter trong Lisp. 


  11. Hiện tại bản vẻ của em có nhiều layer, mỗi layer có thuộc tính riêng, đối tượng trong layer đều là By Layer hết.

     

    Giờ em muốn tất cả đối tượng trong layer sẽ mang thuộc tính riêng (thuộc tính layer cấp cho)

     

    Ví dụ: Layer 1 có màu 1, line type 1, line wieght 1

     

    Những đối tượng trong layer 1 sẽ mang thuộc tính đó

     

    Yêu cầu chuyển nhanh đối tượng đó về màu 1, line type 1, line wieght 1 (không phải chọn đối tượng sau đó chọn màu 1,  line type 1, line wieght 1)

     

    Áp dụng cho LAYTRANS vẫn giữ thuộc tính riêng của đối tượng

     

    Ai có cách nào nhanh mà không dùng LISP chỉ em, hoặc viết giùm em 1 cái LISP như vậy.

     

    Cảm ơn!

    • Vote giảm 1

  12. Hiện tại tôi đang thống kê bản vẽ dựa vào block, trong bản vẽ có nhiều khu liền nhau, dùng lisp đếm block có thể đếm được toàn khu rất nhanh nhưng khi thống kê từng khu lại rất lâu do vùng bao mỗi vùng khác nhau không phải hình chữ nhật để quét chọn, tôi có ý là di chuyển toàn bộ block trong mỗi khu ra vùng khác để tiến hành đối block theo khu nhưng vẫn thấy thủ công, một ý khác là wipeout che từng vùng vùng nào đếm sẽ không wipeout nhưng đối tượng dưới wipe khi quét vẫn được chọn nên không hiệu quả. Mọi người có cách nào hay lisp nào để đếm block trong vùng polyline phức tạp nằm cạnh nhau không?


  13. Do ở công ty không có máy in khổ lớn nên phải ra tiệm để in, mà trong layout lúc page setup em chỉnh là máy in ảo để in thử trước rồi ra tiệm nó báo máy in không được tìm thấy nên không thể publish hết mà chọn từng layout thì nó lâu do bản vẽ nặng. Anh em nào có lisp hay cách nào giúp em...Thanks nhiều!


  14. Em có vẽ mấy cái khung tên vẽ bên model với các khung A3 A2 A1, nhưng không biết sao copy nó vào layout nhưng nó không bắt điểm ngay góc của khung layout mà nó hơi lệch một tý nên lên đây hỏi có ai biết làm sao nó vào ngay 4 góc layout không (tạo file mẩu để Xrefs nó vào layout) với làm sao chỉnh cái vùng in trong layout chổ vùng trong cái đường đứt cho nó ra ngoài sát khung layout luôn.

     

    12-1.jpg

     

    2012-10-18_232534.jpg

     

    Cảm ơn nhiều.


  15. Hiện nay có rất nhiều phần mềm phục vụ việc thiết kế trình bày bản vẽ kiến trúc và cảnh quan nhưng không biết nên học rành về phần mềm nào là thích hợp nên lên đây hỏi mọi người về những phần mềm cần thiết cho từng công đoạn 2D, 3D, phối cảnh, hoàn thiện bản vẽ. Từ ngày đi học tới giờ em chỉ sử dụng AutoCAD, Sketchup, Vray for Sketchup chưa đi làm nên lên đây hỏi xem nên sử dụng thành thạo cái nào để có thể hoàn thành công việc khi đi làm.

    PS: có cần học Revit A không và hiện em đi học về Thiết kế cảnh quan nên chỉ cần biết phần mềm cho cảnh quan thôi. Thanks!!!

×