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

Tạo giúp mình lisp tạo layer có độ dày nét

Các bài được khuyến nghị

Quote

(defun c:TaoL()
(command "layer" "m" "01-BigDesign-CAT BE TONG"  "c" "2" "" "")
(command "layer" "m" "02-BigDesign-CAT TUONG" "c" "1" "" "")
(command "layer" "m" "03-BigDesign-THAY" "c" "7" "" "")

(command "layer" "m" "04-BigDesign-TIM TRUC" "c" "159" "" "l" "CENTER" "" "")
(command "layer" "m" "05-BigDesign-HATCH" "c" "251" "" "")
(command "layer" "m" "06-BigDesign-TEXT" "c" "9" "" "")
(command "layer" "m" "07-BigDesign-DIM" "c" "8" "" "")
(command "layer" "m" "08-BigDesign-CO CAY" "c" "86" "" "")

(command "layer" "m" "09-BigDesign-NOI THAT" "c" "149" "" "")
(command "layer" "m" "10-BigDesign-KHUAT" "c" "27" "" "l" "hidden" "" "")


(command "layer" "m" "11-BigDesign-TRICH CHI TIET" "c" "6" "" "")
(command "layer" "m" "12-BigDesign-MANH" "c" "155" "" "")
(command "layer" "m" "13-BigDesign-CUA" "c" "191" "" "")
(command "layer" "m" "14-BigDesign-LEADER" "c" "8" "" "")
(command "layer" "m" "15-BigDesign-KHUNG TEN" "c" "9" "" "")


(princ)

 mình sửa từ lisp này muốn các layer có độ dày nét nhưng không mò ra được, các bạn sửa giúp mình nhé.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
6 giờ trước, khimatro đã nói:

 mình sửa từ lisp này muốn các layer có độ dày nét nhưng không mò ra được, các bạn sửa giúp mình nhé.

 

Bạn nên dùng phiên bản dòng lệnh của lệnh Layer là -LAYER để AutoLISP chạy ổn định.

Trong -LAYER, tuỳ chọn bề dày nét là LWeight (thường gõ tắt LW). Trình tự nhập là

chọn LW

nhập giá trị lineweight

chỉ định layer áp dụng

kết thúc bằng chuỗi rỗng ""

Ví dụ tạo layer, đặt màu, rồi đặt bề dày nét 0.50 mm cho chính layer đó

(command "-layer" "m" "01-BigDesign-CAT BE TONG1" "c" "2" "" "lw" "0.50" "01-BigDesign-CAT BE TONG" "")

 

Tuy nhiên cách dùng lisp để tạo layer không phải là một cách làm chuẩn, bạn nên tạo layer, block, style,... rồi lưu vào một file .dwt ví dụ mystandard.dwt rồi lưu lại, mỗi lần new file thì chọn file template đó từ hộp thoại new file.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Quote

(defun c:TaoLL()
(command "-layer" "m" "@-CAT BE TONG" "c" "2" "" "lw" "0.50" "@-CAT BE TONG" "")
(command "-layer" "m" "@-CAT TUONG" "c" "1" "" "lw" "0.50" "@-CAT TUONG" "")
(command "-layer" "m" "@-THAY" "c" "7" "" "lw" "0.50" "@-THAY" "")

(command "-layer" "m" "@-TIM TRUC" "c" "159" "l" "CENTER" "" "lw" "0.50" "@-TIM TRUC" "")
(command "-layer" "m" "@-HATCH" "c" "251" "" "lw" "0.50" "@-HATCH" "")
(command "-layer" "m" "@-TEXT" "c" "9" "" "lw" "0.50" "@-TEXT" "")
(command "-layer" "m" "@-DIM" "c" "8" "" "lw" "0.50" "@-DIM" "")
(command "-layer" "m" "@-CO CAY" "c" "86" "" "lw" "0.50" "@-CO CAY" "")

(command "-layer" "m" "@-NOI THAT" "c" "147" "" "lw" "0.50" "@-NOI THAT" "")
(command "-layer" "m" "@-KHUAT" "c" "27" "" "l" "hidden" "" "lw" "0.50" "@-KHUAT" "")


(command "-layer" "m" "@-TRICH CHI TIET" "c" "6" "" "lw" "0.50" "@-TRICH CHI TIET" "")
(command "-layer" "m" "12-BigDesign-MANH" "c" "155" "lw" "" "0.50" "@-MANH" "")
(command "-layer" "m" "13-BigDesign-CUA" "c" "191" "" "lw" "0.50" "@-CUA" "")
(command "-layer" "m" "@LEADER" "c" "8" "" "lw" "0.50" "@-LEADER" "")
(command "-layer" "m" "@-KHUNG TEN" "c" "9" "" "lw" "0.50" "@-KHUNG TEN" "")


(princ)

Em tạo theo gợi ý của a nhưng vẫn không được. Em k biết gì về code chỉ mò và sửa lisp tạo list lisp của mình thôi nên a check giúp e nhé

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Bạn thử xem!
(command "-layer" "m" "OK_CONDE" "c" "2" "" "lw" "1" "" "")

Hoặc dùng hàm này
(defun TaoLayerMoi (TenLayer Mau Lucnet / validLW)
  (setq LtsLw '(0 5 9 13 15 18 20 25 30 35 40 50 53 60 70 80 90 100 106 120 140 158 200 211))
  (if (member Lucnet LtsLw)
    (progn
      (if (not (tblsearch "LAYER" TenLayer))
    (progn
      (entmakex
        (list
          '(0 . "LAYER")
          '(100 . "AcDbSymbolTableRecord")
          '(100 . "AcDbLayerTableRecord")
          (cons 2 TenLayer)
          '(70 . 0)
          (cons 62 Mau)
          (cons 370 Lucnet)
        )
      )
    )
      )
    )
  )
)

ví dụ: (command "-layer" "m" "OK_CONDE" "c" "2" "" "lw" "1" "" "") tương đương  (TaoLayerMoi"OK_CONDE" 2 100)

Chú ý: LineWeight phải nằm trong bảng giá trị thì mới tạo được.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Quote

(defun c:TaoLLL()
(command "-layer" "m" "@-BETONG" "c" "2" "" "l" "CENTER" "" "" "lw" "1" "" "")
(command "-layer" "m" "@-TUONG" "c" "3" "" "lw" "1" "" "" "l" "CENTER" "" "")

(princ)

Mình tạo lệnh theo dòng trên của bạn thì được , nhưng thêm phần linetype vào thì lại bị lỗi layer tạo ra không có màu không có độ dày, không có linetype

image.png.8db998cd39f5fefc023f63afe7487c78.png

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
2 giờ trước, khimatro đã nói:

Mình tạo lệnh theo dòng trên của bạn thì được , nhưng thêm phần linetype vào thì lại bị lỗi layer tạo ra không có màu không có độ dày, không có linetype

Mắc 2 lỗi :

1- ký tự @ như bạn trên nói

2- thừ một lần Enter ""

Bạn thử: (command "-layer" "m" "BETONG" "c" "2" "" "l" "CENTER" "" "lw" "1" "" "")

  • Like 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
(defun c:DoLayers ()
  (mapcar 'MkLay
          '( "_Center"   "_Dim" "_Hatch"  "_Hiden"   "_Steel" "_Stirrup"  "_Text")  ; Name [Str]
          '(   9       1      8      2       3    6       4  )  ; Colours [Int]
          '("CENTER"  nil    nil  "HIDDEN"   nil   nil  nil )  ; LineType [Str]
          '( "013"   "013"  "013"  "015"    "050" "040"    nil )  ; LineWeight [Str] 0.18 = "018"
          '(   T       T      T      T        T     T      T  ) ; Plottable (T or nil)
	  '( nil   nil  nil  nil    "Thep chiu luc" "Thep dai"    nil )  ; Description [Str]
	  )
  (princ)
  )

  (defun MkLay	(Nme Col lTyp lWgt Plt des / lays lay)
    (vl-load-com)
    (setq lays (vla-get-layers
		 (vla-get-ActiveDocument
		   (vlax-get-acad-object)
		 )
	       )
	  lay  (cond ((tblsearch "LAYER" Nme)
		      (vla-item lays Nme)
		     )
		     (t (vla-add lays Nme))
	       )
    )
    (and Col (vla-put-Color lay Col))
    (and lTyp
	 (or (tblsearch "LTYPE" lTyp)
	     (vla-load
	       (vla-get-Linetypes
		 (vla-get-ActiveDocument
		   (vlax-get-acad-object)
		 )
	       )
	       lTyp
	       (if (zerop (getvar 'measurement)) "acad.lin" "acadiso.lin")
	     )
	 )
	 (vla-put-Linetype lay lTyp)
    )
    (and lWgt
	 (vl-catch-all-apply 'vla-put-LineWeight (list  lay (eval (read (strcat "acLnWt" lWgt)))))
    )
    (and (not Plt) (vla-put-Plottable lay :vlax-false))
    (and des (/= "" des) (vla-put-Description lay des))
  )

Bạn khai báo chi tiết cho layer mới sẽ được tạo bên trong c:DoLayers nhé

  • Like 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

×