Đến nội dung


Hình ảnh
* * * - - 8 Bình chọn

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


  • Chủ đề bị khóa Chủ đề bị khóa
3783 replies to this topic

#3101 LiveView

LiveView

    biết zoom

  • Members
  • Pip
  • 11 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 27 January 2011 - 10:48 PM

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:
  • 0

#3102 shitty

shitty

    biết zoom

  • Members
  • Pip
  • 19 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 08 February 2011 - 11:16 PM

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...
  • 0

#3103 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5679 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 09 February 2011 - 09:35 AM

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 :)
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3104 shitty

shitty

    biết zoom

  • Members
  • Pip
  • 19 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 10 February 2011 - 11:12 AM

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à.
  • 0

#3105 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5679 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 11 February 2011 - 11:17 AM

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))
)

  • 2

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3106 790312

790312

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 204 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 11 February 2011 - 05:00 PM

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
  • 0

#3107 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 11 February 2011 - 08:07 PM

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
  • 1

#3108 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5679 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 11 February 2011 - 08:34 PM

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 ^^)
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3109 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 12 February 2011 - 08:58 AM

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é.
  • 0

#3110 790312

790312

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 204 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 12 February 2011 - 09:33 AM

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.
  • 0

#3111 shitty

shitty

    biết zoom

  • Members
  • Pip
  • 19 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 12 February 2011 - 09:36 AM

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 )
  • 0

#3112 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 12 February 2011 - 09:42 AM

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
  • 0

#3113 790312

790312

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 204 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 12 February 2011 - 11:35 AM

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.
  • 0

#3114 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 12 February 2011 - 03:01 PM

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é
  • 0

#3115 shitty

shitty

    biết zoom

  • Members
  • Pip
  • 19 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 12 February 2011 - 10:24 PM

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ỉ :(
  • 0

#3116 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5679 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 13 February 2011 - 08:32 AM

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 :)
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3117 shitty

shitty

    biết zoom

  • Members
  • Pip
  • 19 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 14 February 2011 - 09:38 AM

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
  • 0

#3118 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5679 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 14 February 2011 - 09:41 AM

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))
)

  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3119 shitty

shitty

    biết zoom

  • Members
  • Pip
  • 19 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 15 February 2011 - 08:58 AM

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
  • 0

#3120 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5679 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 15 February 2011 - 09:39 AM

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
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC