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

Viết lisp theo yêu cầu [phần 2]

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

Sao bạn không sử dụng lệnh Filter hay là Quick select hoặc là lệnh SSX?

Àh, mình gần như ko biết gì về cách viết lisp, nhưng đang lắp ghép mấy lisp sưu tầm được để thành 1 lisp phục vụ cho công việc riêng, vì vậy mới có nhu cầu như trên :s_big:

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

mong các cao thủ viết giùm e 1 lisp về hatch với! cụ thể là khi mình muốn hatch,pick vao chỗ cần hatch-rồi có các kiểu hatch như Wall/grass/betone/ground/...dùng các phim' để chọn nhu W cho wall,B cho betone... hatch được cả phần hở ,co kéo được ((hpgaptol)và "hpassoc" 1))sau khi hatch xong thi phần hatch xong sẽ tự chuyển về layer 00-08hatch ...vì e gà quá nên cũng tý toáy cũng chẳng dc nên cơm cháo ji nên nhờ các cao thủ trên diễn đàn giúp e...

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

mong các cao thủ viết giùm e 1 lisp về hatch với! cụ thể là khi mình muốn hatch,pick vao chỗ cần hatch-rồi có các kiểu hatch như Wall/grass/betone/ground/...dùng các phim' để chọn nhu W cho wall,B cho betone... hatch được cả phần hở ,co kéo được ((hpgaptol)và "hpassoc" 1))sau khi hatch xong thi phần hatch xong sẽ tự chuyển về layer 00-08hatch ...vì e gà quá nên cũng tý toáy cũng chẳng dc nên cơm cháo ji nên nhờ các cao thủ trên diễn đàn giúp e...

Trong viết lisp không thể có phần .... được bạn ơi :)

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

Trong viết lisp không thể có phần .... được bạn ơi :)

hì cái đó e hok biết nên bác thông cảm :P ý em là cho 1 số mẫu hatch vào,,rồi thì e sẽ tự edit cho phù hợp í mà.

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

mong các cao thủ viết giùm e 1 lisp về hatch với! cụ thể là khi mình muốn hatch,pick vao chỗ cần hatch-rồi có các kiểu hatch như Wall/grass/betone/ground/...dùng các phim' để chọn nhu W cho wall,B cho betone... hatch được cả phần hở ,co kéo được ((hpgaptol)và "hpassoc" 1))sau khi hatch xong thi phần hatch xong sẽ tự chuyển về layer 00-08hatch ...vì e gà quá nên cũng tý toáy cũng chẳng dc nên cơm cháo ji nên nhờ các cao thủ trên diễn đàn giúp e...

Bạn edit cho phù hợp nhu cầu nhé. Nhớ là trong bản vẽ phải có layer 00-08Hatch rồi đó, vì mình k để code tạo layer vào

(defun c:h1()	
(initget 1 "0 WALL W GRASS GR GROUND G MARBLE M WC S SAND B BRICK")
(setq s1 (getkword "\n0/Wall/Grass/Ground/MARBLE/WC/Sand/BRICK[0/Wall/Grass/Ground/MARBLE/WC/Sand/BRICK] "))
	(cond
	  ((= "0" (strcase s1)) (SetHvar "ansi37" 1 0 1 20 ))
	  ((= "WC" (strcase s1)) (SetHvar "ansi31" 1 0 1 20))
	  ((or (= "GR" (strcase s1)) (= "GRASS" (strcase s1)))(SetHvar "GRASS" 1 0 1 20))								   
	  ((or (= "S" (strcase s1)) (= "SAND" (strcase s1)))(SetHvar "AR-CONC" 1 0 1 20))			
	  ((or (= "G" (strcase s1)) (= "GROUND" (strcase s1))) (SetHvar "AR-CONC" 1 0 1 20))
	  ((or (= "M" (strcase s1)) (= "MARBLE" (strcase s1))) (SetHvar "AR-CONC" 1 0 1 20))
	  ((or (= "B" (strcase s1)) (= "BRICK" (strcase s1))) (SetHvar "AR-CONC" 1 0 1 20))
	  ((or (= "W" (strcase s1)) (= "WALL" (strcase s1)))(SetHvar "AR-CONC" 1 0 1 20))
	);end cond
 	(command "-hatch")
(while (< 0 (getvar "CMDACTIVE"))	(command pause))
(acet-sysvar-restore)
);END C:
(defun SetHvar ( hName hScale hAng hAssoc hGap) ;hLayer)
(acet-sysvar-set (list "hpname" hname "hpscale" hScale "hpang" hAng "hpassoc" hAssoc "hpgaptol" hgap "clayer" "00-08Hatch" "HPSEPARATE" 1))
)

  • Vote tăng 2

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 edit cho phù hợp nhu cầu nhé. Nhớ là trong bản vẽ phải có layer 00-08Hatch rồi đó, vì mình k để code tạo layer vào

(defun c:h1()	
(initget 1 "0 WALL W GRASS GR GROUND G MARBLE M WC S SAND B BRICK")
(setq s1 (getkword "\n0/Wall/Grass/Ground/MARBLE/WC/Sand/BRICK[0/Wall/Grass/Ground/MARBLE/WC/Sand/BRICK] "))
	(cond
	  ((= "0" (strcase s1)) (SetHvar "ansi37" 1 0 1 20 ))
	  ((= "WC" (strcase s1)) (SetHvar "ansi31" 1 0 1 20))
	  ((or (= "GR" (strcase s1)) (= "GRASS" (strcase s1)))(SetHvar "GRASS" 1 0 1 20))								   
	  ((or (= "S" (strcase s1)) (= "SAND" (strcase s1)))(SetHvar "AR-CONC" 1 0 1 20))			
	  ((or (= "G" (strcase s1)) (= "GROUND" (strcase s1))) (SetHvar "AR-CONC" 1 0 1 20))
	  ((or (= "M" (strcase s1)) (= "MARBLE" (strcase s1))) (SetHvar "AR-CONC" 1 0 1 20))
	  ((or (= "B" (strcase s1)) (= "BRICK" (strcase s1))) (SetHvar "AR-CONC" 1 0 1 20))
	  ((or (= "W" (strcase s1)) (= "WALL" (strcase s1)))(SetHvar "AR-CONC" 1 0 1 20))
	);end cond
 	(command "-hatch")
(while (< 0 (getvar "CMDACTIVE"))	(command pause))
(acet-sysvar-restore)
);END C:
(defun SetHvar ( hName hScale hAng hAssoc hGap) ;hLayer)
(acet-sysvar-set (list "hpname" hname "hpscale" hScale "hpang" hAng "hpassoc" hAssoc "hpgaptol" hgap "clayer" "00-08Hatch" "HPSEPARATE" 1))
)

Bạn có thể thêm vào chức năng cho SCALE mặc định là 50 được không?Thanks

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 có thể thêm vào chức năng cho SCALE mặc định là 50 được không?Thanks

Bạn thay dòng :

(SetHvar "ansi31" 1 0 1 20))

thành dòng :

(SetHvar "ansi31" 50 0 1 20))

 

Làm tương tự cho các mẫu còn lại

  • Vote tăng 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

Bạn có thể thêm vào chức năng cho SCALE mặc định là 50 được không?Thanks

Mình để hàm con để sử dụng nhiều lần, bạn có thể làm như bác Tuệ hướng dẫn với từng mẫu, hoặc bạn sửa dòng cuối cùng

acet-sysvar-set (list "hpname" hname "hpscale" hScale "hpang" hAng "hpassoc" hAssoc "hpgaptol" hgap "clayer" "00-08Hatch" "HPSEPARATE" 1))

thành

acet-sysvar-set (list "hpname" hname "hpscale" 50 "hpang" hAng "hpassoc" hAssoc "hpgaptol" hgap "clayer" "00-08Hatch" "HPSEPARATE" 1))

thì tất cả các mẫu hatch trong lisp đều lấy Scale 50 (coi như thừa tham số hScale lun ^^)

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

Mình để hàm con để sử dụng nhiều lần, bạn có thể làm như bác Tuệ hướng dẫn với từng mẫu, hoặc bạn sửa dòng cuối cùng

 

thành

 

thì tất cả các mẫu hatch trong lisp đều lấy Scale 50 (coi như thừa tham số hScale lun ^^)

Cả 2 cách sửa trên của Tue_NV và ketxu đều can thiệp vào file Lisp, tức là phải mở file Lisp lên và sửa

Tue_NV nghĩ rằng nên gán các giá trị mặc định cho Hatch và tiến hành Hatch theo giá trị này.

1. Lisp của bạn ketxu Hatch các mẫu theo 1 giá trị mặc định ở trong Lisp, muốn thay đổi giá trị lại vào trong Lisp mà sửa lại. Hơi phiền nhỉ?

 

Cách gán giá trị mặc định của Tue_NV là cách như sau

1. Thiết lập các biến hệ thống bằng cách gõ tên biến hệ thống ở dòng Command và thiết lập giá trị cho nó.

Trường hợp bạn không nhớ tên biến hệ thống thì bạn có thể làm như sau :

Bật hộp thoại hatch lên bằng cách sử dụng lệnh H

-> Thiết lập các giá trị Associate, Gap Tolerance....

Trỏ vào Scale, Angle, thiết lập giá trị cho Hatch (làm cuối cùng)

Thiết lập xong rồi, Không làm gì cả -> Enter kết thúc lệnh

 

Bây giờ thì các giá trị quy định về Scale, Angle,.. của Hatch đã được thiết lập mặc định rồi đấy. Bạn có thể bật hộp thoại Hatch lên lại để kiểm tra. (hoặc xem lại giá trị của biến hệ thống quy định các giá trị của Hatch

Bạn chỉ việc Hatch mà thôi và đương nhiên Lisp của bạn ketxu cũng sẽ được sửa lại 1 chút:

 

(defun c:h1()	
(initget 1 "0 WALL W GRASS GR GROUND G MARBLE M WC S SAND B BRICK")
(setq s1 (getkword "\n0/Wall/Grass/Ground/MARBLE/WC/Sand/BRICK[0/Wall/Grass/Ground/MARBLE/WC/Sand/BRICK] "))
	(cond
	  ((= "0" (strcase s1)) (SetHvar "ansi37" hScale hAng hAssoc hGap ))
	  ((= "WC" (strcase s1)) (SetHvar "ansi31" hScale hAng hAssoc hGap))
	  ((or (= "GR" (strcase s1)) (= "GRASS" (strcase s1)))(SetHvar "GRASS" hScale hAng hAssoc hGap))								   
	  ((or (= "S" (strcase s1)) (= "SAND" (strcase s1)))(SetHvar "AR-CONC" hScale hAng hAssoc hGap))			
	  ((or (= "G" (strcase s1)) (= "GROUND" (strcase s1))) (SetHvar "AR-CONC" hScale hAng hAssoc hGap))
	  ((or (= "M" (strcase s1)) (= "MARBLE" (strcase s1))) (SetHvar "AR-CONC" hScale hAng hAssoc hGap))
	  ((or (= "B" (strcase s1)) (= "BRICK" (strcase s1))) (SetHvar "AR-CONC" hScale hAng hAssoc hGap))
	  ((or (= "W" (strcase s1)) (= "WALL" (strcase s1)))(SetHvar "AR-CONC" hScale hAng hAssoc hGap))
	);end cond
 	(command "-hatch")
(while (< 0 (getvar "CMDACTIVE"))	(command pause))
(acet-sysvar-restore)
);END C:
(defun SetHvar ( hName hScale hAng hAssoc hGap) ;hLayer)
(acet-sysvar-set (list "hpname" hname "hpscale" hScale "hpang" hAng "hpassoc" hAssoc "hpgaptol" hgap "clayer" "00-08Hatch" "HPSEPARATE" 1))
)

 

Như vậy các biến hệ thống có thể được thiết lập mặc định thông qua hộp thoại Hatch.

Sử dụng Lisp trên sẽ Hatch theo giá trị được thiết lập mặc định thông qua hộp thoại Hatch

Các Bạn thử xem 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

Cả 2 cách sửa trên của Tue_NV và ketxu đều can thiệp vào file Lisp, tức là phải mở file Lisp lên và sửa

Tue_NV nghĩ rằng nên gán các giá trị mặc định cho Hatch và tiến hành Hatch theo giá trị này.

1. Lisp của bạn ketxu Hatch các mẫu theo 1 giá trị mặc định ở trong Lisp, muốn thay đổi giá trị lại vào trong Lisp mà sửa lại. Hơi phiền nhỉ?

 

Cách gán giá trị mặc định của Tue_NV là cách như sau

1. Thiết lập các biến hệ thống bằng cách gõ tên biến hệ thống ở dòng Command và thiết lập giá trị cho nó.

Trường hợp bạn không nhớ tên biến hệ thống thì bạn có thể làm như sau :

Bật hộp thoại hatch lên bằng cách sử dụng lệnh H

-> Thiết lập các giá trị Associate, Gap Tolerance....

Trỏ vào Scale, Angle, thiết lập giá trị cho Hatch (làm cuối cùng)

Thiết lập xong rồi, Không làm gì cả -> Enter kết thúc lệnh

 

Bây giờ thì các giá trị quy định về Scale, Angle,.. của Hatch đã được thiết lập mặc định rồi đấy. Bạn có thể bật hộp thoại Hatch lên lại để kiểm tra. (hoặc xem lại giá trị của biến hệ thống quy định các giá trị của Hatch

Bạn chỉ việc Hatch mà thôi và đương nhiên Lisp của bạn ketxu cũng sẽ được sửa lại 1 chút:

 

(defun c:h1()	
(initget 1 "0 WALL W GRASS GR GROUND G MARBLE M WC S SAND B BRICK")
(setq s1 (getkword "\n0/Wall/Grass/Ground/MARBLE/WC/Sand/BRICK[0/Wall/Grass/Ground/MARBLE/WC/Sand/BRICK] "))
	(cond
	  ((= "0" (strcase s1)) (SetHvar "ansi37" hScale hAng hAssoc hGap ))
	  ((= "WC" (strcase s1)) (SetHvar "ansi31" hScale hAng hAssoc hGap))
	  ((or (= "GR" (strcase s1)) (= "GRASS" (strcase s1)))(SetHvar "GRASS" hScale hAng hAssoc hGap))								   
	  ((or (= "S" (strcase s1)) (= "SAND" (strcase s1)))(SetHvar "AR-CONC" hScale hAng hAssoc hGap))			
	  ((or (= "G" (strcase s1)) (= "GROUND" (strcase s1))) (SetHvar "AR-CONC" hScale hAng hAssoc hGap))
	  ((or (= "M" (strcase s1)) (= "MARBLE" (strcase s1))) (SetHvar "AR-CONC" hScale hAng hAssoc hGap))
	  ((or (= "B" (strcase s1)) (= "BRICK" (strcase s1))) (SetHvar "AR-CONC" hScale hAng hAssoc hGap))
	  ((or (= "W" (strcase s1)) (= "WALL" (strcase s1)))(SetHvar "AR-CONC" hScale hAng hAssoc hGap))
	);end cond
 	(command "-hatch")
(while (< 0 (getvar "CMDACTIVE"))	(command pause))
(acet-sysvar-restore)
);END C:
(defun SetHvar ( hName hScale hAng hAssoc hGap) ;hLayer)
(acet-sysvar-set (list "hpname" hname "hpscale" hScale "hpang" hAng "hpassoc" hAssoc "hpgaptol" hgap "clayer" "00-08Hatch" "HPSEPARATE" 1))
)

 

Như vậy các biến hệ thống có thể được thiết lập mặc định thông qua hộp thoại Hatch.

Sử dụng Lisp trên sẽ Hatch theo giá trị được thiết lập mặc định thông qua hộp thoại Hatch

Các Bạn thử xem nhé.

Bác nhắc giùm e 1 vài tên của biến hệ thông với.Thanks.

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 edit cho phù hợp nhu cầu nhé. Nhớ là trong bản vẽ phải có layer 00-08Hatch rồi đó, vì mình k để code tạo layer vào

(defun c:h1()	
(initget 1 "0 WALL W GRASS GR GROUND G MARBLE M WC S SAND B BRICK")
(setq s1 (getkword "\n0/Wall/Grass/Ground/MARBLE/WC/Sand/BRICK[0/Wall/Grass/Ground/MARBLE/WC/Sand/BRICK] "))
	(cond
	  ((= "0" (strcase s1)) (SetHvar "ansi37" 1 0 1 20 ))
	  ((= "WC" (strcase s1)) (SetHvar "ansi31" 1 0 1 20))
	  ((or (= "GR" (strcase s1)) (= "GRASS" (strcase s1)))(SetHvar "GRASS" 1 0 1 20))								   
	  ((or (= "S" (strcase s1)) (= "SAND" (strcase s1)))(SetHvar "AR-CONC" 1 0 1 20))			
	  ((or (= "G" (strcase s1)) (= "GROUND" (strcase s1))) (SetHvar "AR-CONC" 1 0 1 20))
	  ((or (= "M" (strcase s1)) (= "MARBLE" (strcase s1))) (SetHvar "AR-CONC" 1 0 1 20))
	  ((or (= "B" (strcase s1)) (= "BRICK" (strcase s1))) (SetHvar "AR-CONC" 1 0 1 20))
	  ((or (= "W" (strcase s1)) (= "WALL" (strcase s1)))(SetHvar "AR-CONC" 1 0 1 20))
	);end cond
 	(command "-hatch")
(while (< 0 (getvar "CMDACTIVE"))	(command pause))
(acet-sysvar-restore)
);END C:
(defun SetHvar ( hName hScale hAng hAssoc hGap) ;hLayer)
(acet-sysvar-set (list "hpname" hname "hpscale" hScale "hpang" hAng "hpassoc" hAssoc "hpgaptol" hgap "clayer" "00-08hatch" "HPSEPARATE" 1))
)

e xin cảm ơn bác nhiều,nhưng bác có thể giúp e sửa lại chút chút là khi đánh lệnh h1 xong thi se pick luôn khoang cần hatch,sau đó thì hiện bảng hatch rồi mình chon kiểu hatch bằng phím 0 hay W(wall)... la sẽ hatch xong .à còn lisp bác vừa viết giúp e thi e đánh lệnh h1 rồi hiện cái bảng kiểu hatch nhưng khi e đánh kí tự W hay WC hay B thi hok hiện ra ji nữa :( (với nút thanks e hok nhìn thấy chỗ nào..giao diện mới quá bác thông cảm :P )

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ác nhắc giùm e 1 vài tên của biến hệ thông với.Thanks.

Bạn bấm F1 -> Command Reference -> System Variables -> Bạn kiếm chữ H và tra nhé.

Lisp trên đã có 1 vài biến hệ thống rồi đấy :

"hpname" : tên Hatch

"hpscale" : tỉ lệ Hatch

"hpang" : góc nghiêng của Hatch

hpassoc=1 : Hatch liên kết với đường biên tạo nên Hatch

hpassoc=0 : Hatch không liên kết với đường biên tạo nên Hatch

 

Bạn tìm hiểu tiếp nhé

 

e xin cảm ơn bác nhiều,nhưng bác có thể giúp e sửa lại chút chút là khi đánh lệnh h1 xong thi se pick luôn khoang cần hatch,sau đó thì hiện bảng hatch rồi mình chon kiểu hatch bằng phím 0 hay W(wall)... la sẽ hatch xong .à còn lisp bác vừa viết giúp e thi e đánh lệnh h1 rồi hiện cái bảng kiểu hatch nhưng khi e đánh kí tự W hay WC hay B thi hok hiện ra ji nữa :( (với nút thanks e hok nhìn thấy chỗ nào..giao diện mới quá bác thông cảm :P )

Chào bạn shitty

Bạn đánh lệnh h1 -> chon kiểu hatch bằng phím 0 hay W(wall)...-> Sau đó Pick 1 điểm vào vùng cần Hatch là được

PS: Nút Thanks là dấu + màu xanh ở dưới cuối mỗi bài viết . Bạn Pick vào đó là đượ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

Nhờ các bác sửa giúp giùm e,sao dùng phím tắt thì được nhưng chọn trực tiếp thì không hiển thị đúng HATCH.

;; free lisp from cadviet.com
(defun c:h1()	
(initget 1 "2 ANSI32 3 ANSI33 4 ANSI34 7 ANSI37 SO SOLID AR AR-CONC B BRICK")
(setq s1 (getkword "\nANSI32/ANSI33/ANSI34/ANSI37/SOLID/AR-CONC/BRICK[ANSI32/ANSI33/ANSI34/ANSI37/SOLID/AR-CONC/BRICK] "))
	(cond
	  ((= "2" (strcase s1)) (SetHvar "ANSI32" hScale hAng hAssoc hGap))
	  ((= "3" (strcase s1)) (SetHvar "ANSI33" hScale hAng hAssoc hGap))
                                     ((= "4" (strcase s1)) (SetHvar "ANSI34" hScale hAng hAssoc hGap))
                                     ((= "7" (strcase s1)) (SetHvar "ANSI37" hScale hAng hAssoc hGap))
	  ((= "SO" (strcase s1)) (SetHvar "SOLID" 1 0 1 20))
                                     ((= "AR" (strcase s1)) (SetHvar "AR-CONC" 1 0 1 20))
                                     ((= "B" (strcase s1)) (SetHvar "BRICK" 1 0 1 20))
	);end cond
 	(command "-hatch")
(while (< 0 (getvar "CMDACTIVE"))	(command pause))
(acet-sysvar-restore)
);END C:
(defun SetHvar ( hName hScale hAng hAssoc hGap) ;hLayer)
(acet-sysvar-set (list "hpname" hname "hpscale" hScale "hpang" hAng "hpassoc" hAssoc "hpgaptol" hgap 
"clayer" "S13. HATCH" "HPSEPARATE" 1))
)

Chân thành cảm ơn trướ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

Nhờ các bác sửa giúp giùm e,sao dùng phím tắt thì được nhưng chọn trực tiếp thì không hiển thị đúng HATCH.

;; free lisp from cadviet.com
(defun c:h1()	
(initget 1 "2 ANSI32 3 ANSI33 4 ANSI34 7 ANSI37 SO SOLID AR AR-CONC B BRICK")
(setq s1 (getkword "\nANSI32/ANSI33/ANSI34/ANSI37/SOLID/AR-CONC/BRICK[ANSI32/ANSI33/ANSI34/ANSI37/SOLID/AR-CONC/BRICK] "))
	(cond
	  ((= "2" (strcase s1)) (SetHvar "ANSI32" hScale hAng hAssoc hGap))
	  ((= "3" (strcase s1)) (SetHvar "ANSI33" hScale hAng hAssoc hGap))
                                     ((= "4" (strcase s1)) (SetHvar "ANSI34" hScale hAng hAssoc hGap))
                                     ((= "7" (strcase s1)) (SetHvar "ANSI37" hScale hAng hAssoc hGap))
	  ((= "SO" (strcase s1)) (SetHvar "SOLID" 1 0 1 20))
                                     ((= "AR" (strcase s1)) (SetHvar "AR-CONC" 1 0 1 20))
                                     ((= "B" (strcase s1)) (SetHvar "BRICK" 1 0 1 20))
	);end cond
 	(command "-hatch")
(while (< 0 (getvar "CMDACTIVE"))	(command pause))
(acet-sysvar-restore)
);END C:
(defun SetHvar ( hName hScale hAng hAssoc hGap) ;hLayer)
(acet-sysvar-set (list "hpname" hname "hpscale" hScale "hpang" hAng "hpassoc" hAssoc "hpgaptol" hgap 
"clayer" "S13. HATCH" "HPSEPARATE" 1))
)

Chân thành cảm ơn trước.

Bạn thay dòng :

((= "2" (strcase s1)) (SetHvar "ANSI32" hScale hAng hAssoc hGap))

Thành dòng :

((or (= "2" (strcase s1)) (= "ANSI32" (strcase s1))) (SetHvar "ANSI32" hScale hAng hAssoc hGap))

 

Điều kiện của mình thêm hàm OR ̣hoặc thì mới được.

Bạn sửa tương tự cho các mẫu còn lại 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 edit cho phù hợp nhu cầu nhé. Nhớ là trong bản vẽ phải có layer 00-08Hatch rồi đó, vì mình k để code tạo layer vào

(defun c:h1()	
(initget 1 "0 WALL W GRASS GR GROUND G MARBLE M WC S SAND B BRICK")
(setq s1 (getkword "\n0/Wall/Grass/Ground/MARBLE/WC/Sand/BRICK[0/Wall/Grass/Ground/MARBLE/WC/Sand/BRICK] "))
	(cond
	  ((= "0" (strcase s1)) (SetHvar "ansi37" 1 0 1 20 ))
	  ((= "WC" (strcase s1)) (SetHvar "ansi31" 1 0 1 20))
	  ((or (= "GR" (strcase s1)) (= "GRASS" (strcase s1)))(SetHvar "GRASS" 1 0 1 20))								   
	  ((or (= "S" (strcase s1)) (= "SAND" (strcase s1)))(SetHvar "AR-CONC" 1 0 1 20))			
	  ((or (= "G" (strcase s1)) (= "GROUND" (strcase s1))) (SetHvar "AR-CONC" 1 0 1 20))
	  ((or (= "M" (strcase s1)) (= "MARBLE" (strcase s1))) (SetHvar "AR-CONC" 1 0 1 20))
	  ((or (= "B" (strcase s1)) (= "BRICK" (strcase s1))) (SetHvar "AR-CONC" 1 0 1 20))
	  ((or (= "W" (strcase s1)) (= "WALL" (strcase s1)))(SetHvar "AR-CONC" 1 0 1 20))
	);end cond
 	(command "-hatch")
(while (< 0 (getvar "CMDACTIVE"))	(command pause))
(acet-sysvar-restore)
);END C:
(defun SetHvar ( hName hScale hAng hAssoc hGap) ;hLayer)
(acet-sysvar-set (list "hpname" hname "hpscale" hScale "hpang" hAng "hpassoc" hAssoc "hpgaptol" hgap "clayer" "00-08Hatch" "HPSEPARATE" 1))
)

báC ketxu cho e hỏi cái là sao e dùng lệnh h1 rồi ,cũng hiện lên bảng rồi nhưng đánh phím hay tick trực tiếp trong bảng thì nó ko thấy cái ji luôn..thế là bi làm sao 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

Nếu vẫn "không thấy gì" thì không còn cách nào khác, lúc sử dụng lệnh gặp lỗi ở chỗ nào bạn hãy ấn F2 và chụp lại màn hình cho ketxu xem thì mới biết được ^^..Như mình vẫn nói, hok ai chữa bệnh ung thư qua điện thoại cả :)

Mình nhắc lại một lần nữa câu mình nói với bạn mấy bài trước.Hy vọng bạn hiểu và thông cảm. Những người tham gia trong mục này không thể lúc nào cũng ngồi bên cạnh người dùng lisp hoặc vò đầu "tại sao không thấy gì cả" đượ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

Mình nhắc lại một lần nữa câu mình nói với bạn mấy bài trước.Hy vọng bạn hiểu và thông cảm. Những người tham gia trong mục này không thể lúc nào cũng ngồi bên cạnh người dùng lisp hoặc vò đầu "tại sao không thấy gì cả" được :)

hi` mong bác mở tấm lòng từ bi hỉ xả mà bỏ quá cho đứa gà như e :P nên thỉnh thoảng hỏi những câu hơi thợ mộc ! bác thông cảm :P.cái lisp bác viết giúp e, e ấn F2 thi nó hiện dòng :

Command: h1

 

0/Wall/Grass/Ground/MARBLE/WC/Sand/BRICK[0/Wall/Grass/Ground/MARBLE/WC/Sand/BRIC

K] gr

; error: no function definition: ACET-SYSVAR-SET

 

Command: h1

 

0/Wall/Grass/Ground/MARBLE/WC/Sand/BRICK[0/Wall/Grass/Ground/MARBLE/WC/Sand/BRIC

K] 0

; error: no function definition: ACET-SYSVAR-SET

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

Lỗi này do máy bạn chưa cài bộ Express Tool.Bạn cài lại nó vào đi :)

Nếu khó khăn trong việc cài bộ Express thì bạn dùng lại đoạn sau cho nó thuần :

;free lisp from cadviet.com @ ketxu
(defun c:h2()
(setq vList '("hpname" "hpscale" "hpang" "hpassoc" "hpgaptol" "clayer" "HPSEPARATE") ; Sys Var list
vValue (mapcar 'getvar vList)) 	
(initget 1 "0 WALL W GRASS GR GROUND G MARBLE M WC S SAND B BRICK")
(setq s1 (getkword "\n0/Wall/Grass/Ground/MARBLE/WC/Sand/BRICK[0/Wall/Grass/Ground/MARBLE/WC/Sand/BRICK] "))
	(cond
	  ((= "0" (strcase s1)) (SetHvar "ansi37" 1 0 1 20 ))
	  ((= "WC" (strcase s1)) (SetHvar "ansi31" 1 0 1 20))
	  ((or (= "GR" (strcase s1)) (= "GRASS" (strcase s1)))(SetHvar "GRASS" 1 0 1 20))								   
	  ((or (= "S" (strcase s1)) (= "SAND" (strcase s1)))(SetHvar "AR-CONC" 1 0 1 20))			
	  ((or (= "G" (strcase s1)) (= "GROUND" (strcase s1))) (SetHvar "AR-CONC" 1 0 1 20))
	  ((or (= "M" (strcase s1)) (= "MARBLE" (strcase s1))) (SetHvar "AR-CONC" 1 0 1 20))
	  ((or (= "B" (strcase s1)) (= "BRICK" (strcase s1))) (SetHvar "AR-CONC" 1 0 1 20))
	  ((or (= "W" (strcase s1)) (= "WALL" (strcase s1)))(SetHvar "AR-CONC" 1 0 1 20))
	);end cond
 	(command "-hatch")
(while (< 0 (getvar "CMDACTIVE"))	(command pause))
(mapcar 'setvar vList vValue)
);END C:
(defun SetHvar (hName hScale hAng hAssoc hGap) ;hLayer)
(mapcar 'setvar vlist (list hname hScale hAng  hAssoc hgap "00-08Hatch" 1))
)

  • Vote tăng 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

Lỗi này do máy bạn chưa cài bộ Express Tool.Bạn cài lại nó vào đi :)

Nếu khó khăn trong việc cài bộ Express thì bạn dùng lại đoạn sau cho nó thuần :

;free lisp from cadviet.com @ ketxu
(defun c:h2()
(setq vList '("hpname" "hpscale" "hpang" "hpassoc" "hpgaptol" "clayer" "HPSEPARATE") ; Sys Var list
vValue (mapcar 'getvar vList)) 	
(initget 1 "0 WALL W GRASS GR GROUND G MARBLE M WC S SAND B BRICK")
(setq s1 (getkword "\n0/Wall/Grass/Ground/MARBLE/WC/Sand/BRICK[0/Wall/Grass/Ground/MARBLE/WC/Sand/BRICK] "))
	(cond
	  ((= "0" (strcase s1)) (SetHvar "ansi37" 1 0 1 20 ))
	  ((= "WC" (strcase s1)) (SetHvar "ansi31" 1 0 1 20))
	  ((or (= "GR" (strcase s1)) (= "GRASS" (strcase s1)))(SetHvar "GRASS" 1 0 1 20))								   
	  ((or (= "S" (strcase s1)) (= "SAND" (strcase s1)))(SetHvar "AR-CONC" 1 0 1 20))			
	  ((or (= "G" (strcase s1)) (= "GROUND" (strcase s1))) (SetHvar "AR-CONC" 1 0 1 20))
	  ((or (= "M" (strcase s1)) (= "MARBLE" (strcase s1))) (SetHvar "AR-CONC" 1 0 1 20))
	  ((or (= "B" (strcase s1)) (= "BRICK" (strcase s1))) (SetHvar "AR-CONC" 1 0 1 20))
	  ((or (= "W" (strcase s1)) (= "WALL" (strcase s1)))(SetHvar "AR-CONC" 1 0 1 20))
	);end cond
 	(command "-hatch")
(while (< 0 (getvar "CMDACTIVE"))	(command pause))
(mapcar 'setvar vList vValue)
);END C:
(defun SetHvar (hName hScale hAng hAssoc hGap) ;hLayer)
(mapcar 'setvar vlist (list hname hScale hAng  hAssoc hgap "00-08Hatch" 1))
)

e cài xong cái express tool thì dùng dc nhưng khi tắt cad bật lại thi lisp lai ba'o lỗi :

0/Wall/Grass/Ground/MARBLE/WC/Sand/BRICK[0/Wall/Grass/Ground/MARBLE/WC/Sand/BRIC

K] w

; error: no function definition: SETHVAR

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

Hàm SetHvar mình viết đi kèm luôn hàm chính, sao lại có khi load hàm chính lại k load hàm con ?Bạn có thay đổi j k?

Mà bạn đã thử dùng cái lisp mình mới viết hqua k ?? Mình có phần hơi nản đó :)

 

P/S : bạn chỉ cần quote phần cần thiết th, quote lại cả code mọi người hoa mắt lắm đó bạn

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

Hàm SetHvar mình viết đi kèm luôn hàm chính, sao lại có khi load hàm chính lại k load hàm con ?Bạn có thay đổi j k?

Mà bạn đã thử dùng cái lisp mình mới viết hqua k ?? Mình có phần hơi nản đó :)

Sao mà nản sớm thế hả em :blush:

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 ơi mình đang bị vướng mắc với công việc. Bạn nào có biết lệnh nào tự động đo các đoạn thẳng trong cad mà các số đo của các đoạn ấy vẫn hiện thị như cách đo bình thường.

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 ơi mình đang bị vướng mắc với công việc. Bạn nào có biết lệnh nào tự động đo các đoạn thẳng trong cad mà các số đo của các đoạn ấy vẫn hiện thị như cách đo bình thường.

Trước tiên bạn dạy cho mọi người khái niệm "cách đo bình thường" thì may ra mới biết cách làm nó "hiện thị" cho giống đượ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

Hàm SetHvar mình viết đi kèm luôn hàm chính, sao lại có khi load hàm chính lại k load hàm con ?Bạn có thay đổi j k?

Mà bạn đã thử dùng cái lisp mình mới viết hqua k ?? Mình có phần hơi nản đó :)

 

 

thành thật sory bác...tai e còn nhiều cái chưa biết và chưa hiểu nên nhiều câu hỏi khiến bác bực mình.những điều bác nói đối với e cũng như những người mới tham gia đều rất có ích.! :D thanks bác thêm lần nữa !!! chứ bác nản thì lấn sau e biết hỏi ai ...:P

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

Vấn đề là bạn đã giải quyết được cái sự thiếu àm đó chưa.Bạn dùng nguyên cái H2 xem nó có đc k ?

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
Khách
Chủ đề này bây giờ đã bị đóng lại để trả lời thêm.

×