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

[NHỜ CHỈNH SỬA] Về vấn đề lisp hatch nhanh

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

(defun c:SF(/ p dt ans ten sc ang dt)
(setvar "cmdecho" 0)
(initget "B B1 B2 BK G GD GD1 GL GL1 GL2 D D1 C K N N1 TO GO GO1")
(setq ans (getkword "\n Chon kieu hatch < B/B1/B2/BK/G/GD/GD1/GL/GL1/GL2/D/D1/C/K/N/N1/TO/GO/GO1 > : "))
(initget "P S")
(setq ansp (getkword "\n Chon kieu pick diem hay chon doi tuong < P/S > :"))
(setq p nil dt t)
;(WHILE (or (not p) (not dt))

(if (= ans "B") 
(progn 
(setq ten "AR-CONC" sc 20.0 ang 0.0
ten2 "ANSI32" sc2 200.0 ang 0.0) 
 (if (= ansp "P")
   (progn
     (while (setq p (getpoint "\n Chon 1 diem trong vung can hatch :"))
     		(lh1 p ten sc ang)
     		(lh1 p ten2 sc2 ang)
     )
   )
   (progn
     (princ "\n Chon doi tuong can hatch :")
     (while (setq dt (ssget) )
     (lh dt ten sc ang)
     (lh dt ten2 sc2 ang)
     )
   )
  )
)
  )





(if (= ans "B1") 
(progn
(setq ten "AR-CONC" sc 20.0 ang 0.0)
  (if (= ansp "P")
    (progn
        (while (setq p (getpoint "\n Chon 1 diem trong vung can hatch :"))
		(lh1 p ten sc ang)
	 )
    )
    (progn
        (princ "\n Chon doi tuong can hatch :")
     	(while (setq dt (ssget) )
    		(lh dt ten sc ang)
	 )
    )
   )
   
)
)




(if (= ans "B2") 
(progn
(setq ten "GRAVEL" sc 100.0 ang 0.0)
  (if (= ansp "P")
    (progn
        (while (setq p (getpoint "\n Chon 1 diem trong vung can hatch :"))
		(lh1 p ten sc ang)
	 )
    )
    (progn
        (princ "\n Chon doi tuong can hatch :")
     	(while (setq dt (ssget) )
    		(lh dt ten sc ang)
	 )
    )
   )
   
)
)


(if (= ans "BK") 
(progn
(setq ten "SOLID" sc 200.0 ang 0.0)
  (if (= ansp "P")
    (progn
        (while (setq p (getpoint "\n Chon 1 diem trong vung can hatch :"))
		(lh1 p ten sc ang)
	 )
    )
    (progn
        (princ "\n Chon doi tuong can hatch :")
     	(while (setq dt (ssget) )
    		(lh dt ten sc ang)
	 )
    )
   )
   
)
)



(if (= ans "G") 
(progn
(setq ten "ANSI31" sc 400.0 ang 0.0)
  (if (= ansp "P")
    (progn
        (while (setq p (getpoint "\n Chon 1 diem trong vung can hatch :"))
		(lh1 p ten sc ang)
	 )
    )
    (progn
        (princ "\n Chon doi tuong can hatch :")
     	(while (setq dt (ssget) )
    		(lh dt ten sc ang)
	 )
    )
   )
   
)
)



(if (= ans "GD") 
(progn
(setq ten "AR-B816" sc 10.0 ang 0.0)
  (if (= ansp "P")
    (progn
        (while (setq p (getpoint "\n Chon 1 diem trong vung can hatch :"))
		(lh1 p ten sc ang)
	 )
    )
    (progn
        (princ "\n Chon doi tuong can hatch :")
     	(while (setq dt (ssget) )
    		(lh dt ten sc ang)
	 )
    )
   )
   
)
)



(if (= ans "GD1") 
(progn
(setq ten "FLGSTONE" sc 500.0 ang 0.0)
  (if (= ansp "P")
    (progn
        (while (setq p (getpoint "\n Chon 1 diem trong vung can hatch :"))
		(lh1 p ten sc ang)
	 )
    )
    (progn
        (princ "\n Chon doi tuong can hatch :")
     	(while (setq dt (ssget) )
    		(lh dt ten sc ang)
	 )
    )
   )
   
)
)




(if (= ans "GL") 
(progn
(setq ten "NET" sc 1500.0 ang 0.0)
  (if (= ansp "P")
    (progn
        (while (setq p (getpoint "\n Chon 1 diem trong vung can hatch :"))
		(lh1 p ten sc ang)
	 )
    )
    (progn
        (princ "\n Chon doi tuong can hatch :")
     	(while (setq dt (ssget) )
    		(lh dt ten sc ang)
	 )
    )
   )
   
)
)

(if (= ans "GL1") 
(progn
(setq ten "ANGLE" sc 700.0 ang 0.0)
  (if (= ansp "P")
    (progn
        (while (setq p (getpoint "\n Chon 1 diem trong vung can hatch :"))
		(lh1 p ten sc ang)
	 )
    )
    (progn
        (princ "\n Chon doi tuong can hatch :")
     	(while (setq dt (ssget) )
    		(lh dt ten sc ang)
	 )
    )
   )
   
)
)

(if (= ans "GL2") 
(progn
(setq ten "AR-HBONE" sc 20.0 ang 0.0)
  (if (= ansp "P")
    (progn
        (while (setq p (getpoint "\n Chon 1 diem trong vung can hatch :"))
		(lh1 p ten sc ang)
	 )
    )
    (progn
        (princ "\n Chon doi tuong can hatch :")
     	(while (setq dt (ssget) )
    		(lh dt ten sc ang)
	 )
    )
   )
   
)
)



(if (= ans "D") 
(progn
(setq ten "HOUND" sc 500.0 ang 45.0)
  (if (= ansp "P")
    (progn
        (while (setq p (getpoint "\n Chon 1 diem trong vung can hatch :"))
		(lh1 p ten sc ang)
	 )
    )
    (progn
        (princ "\n Chon doi tuong can hatch :")
     	(while (setq dt (ssget) )
    		(lh dt ten sc ang)
	 )
    )
   )
   
)
)



(if (= ans "D1") 
(progn
(setq ten "EARTH" sc 500.0 ang 45.0)
  (if (= ansp "P")
    (progn
        (while (setq p (getpoint "\n Chon 1 diem trong vung can hatch :"))
		(lh1 p ten sc ang)
	 )
    )
    (progn
        (princ "\n Chon doi tuong can hatch :")
     	(while (setq dt (ssget) )
    		(lh dt ten sc ang)
	 )
    )
   )
   
)
)







(if (= ans "C") 
(progn
(setq ten "AR-SAND" sc 20.0 ang 0.0)
  (if (= ansp "P")
    (progn
        (while (setq p (getpoint "\n Chon 1 diem trong vung can hatch :"))
		(lh1 p ten sc ang)
	 )
    )
    (progn
        (princ "\n Chon doi tuong can hatch :")
     	(while (setq dt (ssget) )
    		(lh dt ten sc ang)
	 )
    )
   )
   
)
)



(if (= ans "K") 
(progn
(setq ten "AR-RROOF" sc 500.0 ang 45.0)
   (if (= ansp "P")
      (progn
	(while (setq p (getpoint "\n Chon 1 diem trong vung can hatch :"))
		(lh1 p ten sc ang)
	 )
      )
      (progn
	(princ "\n Chon doi tuong can hatch :")
     	(while (setq dt (ssget) )
    		(lh dt ten sc ang)
	 )
      )
   )
)
)



(if (= ans "N") 
(progn
(setq ten "AR-RSHKE" sc 30.0 ang 0.0)
   (if (= ansp "P")
      (progn
	(while (setq p (getpoint "\n Chon 1 diem trong vung can hatch :"))
		(lh1 p ten sc ang)
	 )
      )
      (progn
	(princ "\n Chon doi tuong can hatch :")
     	(while (setq dt (ssget) )
    		(lh dt ten sc ang)
	 )
      )
   )
)
)


(if (= ans "N1") 
(progn
(setq ten "SPANTILE" sc 400.0 ang 0.0)
   (if (= ansp "P")
      (progn
	(while (setq p (getpoint "\n Chon 1 diem trong vung can hatch :"))
		(lh1 p ten sc ang)
	 )
      )
      (progn
	(princ "\n Chon doi tuong can hatch :")
     	(while (setq dt (ssget) )
    		(lh dt ten sc ang)
	 )
      )
   )
)
)





(if (= ans "TO") 
(progn
(setq ten "ANSI32" sc 200.0 ang 45.0)
   (if (= ansp "P")
      (progn
	(while (setq p (getpoint "\n Chon 1 diem trong vung can hatch :"))
		(lh1 p ten sc ang)
	 )
      )
      (progn
	(princ "\n Chon doi tuong can hatch :")
     	(while (setq dt (ssget) )
    		(lh dt ten sc ang)
	 )
      )
   )
)
)




(if (= ans "GO") 
(progn
(setq ten "WOOD8" sc 700.0 ang 0.0)
   (if (= ansp "P")
      (progn
	(while (setq p (getpoint "\n Chon 1 diem trong vung can hatch :"))
		(lh1 p ten sc ang)
	 )
      )
      (progn
	(princ "\n Chon doi tuong can hatch :")
     	(while (setq dt (ssget) )
    		(lh dt ten sc ang)
	 )
      )
   )
)
)



(if (= ans "GO1") 
(progn
(setq ten "WOOD2" sc 500.0 ang 0.0)
   (if (= ansp "P")
      (progn
	(while (setq p (getpoint "\n Chon 1 diem trong vung can hatch :"))
		(lh1 p ten sc ang)
	 )
      )
      (progn
	(princ "\n Chon doi tuong can hatch :")
     	(while (setq dt (ssget) )
    		(lh dt ten sc ang)
	 )
      )
   )
)
)


;);WHILE
(princ)
)
;;;;;;;;
(defun lh1(p name tle goc)
(setvar "hpgaptol" 50.0)
(vl-cmdf "bhatch" "P" name tle goc p "")
)
;;;;;;;;;;
(defun lh(dt name tle goc)
(setvar "hpgaptol" 50.0)
(vl-cmdf "bhatch" "P" name tle goc "S" dt "" "")
) 

Tình hình là mình có sưu tầm 1 Lisp hatch nhanh vật liệu nhưng mình gặp 1 vấn đề là hatch 2 vị trí khác nhau trở lên là mảng hatch không liền khối, mình ko rành lắm về Code chỉ chỉnh sửa lại sơ sơ thôi, nhờ anh em nào rành chỉnh thêm giúp mình với, xin cảm ơn

HATCH NHANH VAT LIEU (SF).lsp

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 gõ lệnh HPSEPARATE (lệnh cad)

- Nhập 0: tất cả các hatch tạo ra trong 1 lệnh sẽ đc gộp thành 1 hatch

- Nhập 1: tất cả các hatch tạo ra trong 1 lệnh sẽ đc chia thành nhiều hatch

Lệnh này đúng với cả lệnh HATCH của cad cũng như lisp trên của bạn (chỉ dám nói lisp trên của bạn, các lisp khác trên mạng chưa chắc).

 

Cách này cũng tương tự cách trên:

Trong bảng lệnh HATCH, ô màu đỏ: tích là 1, bỏ tích là 0. Nhưng sẽ chỉ đc lưu lại khi bạn tạo xong hatch, tích xong mà ấn ESC cũng coi như ko.

Untitled.png

  • 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

Cái đó mình cũng đã thử rồi, nhưng không được bạn à, vì chắc phải chỉnh trong lisp nhưng mình không biết viết code nên không chỉnh sửa được, không có cao nhân nào biết về lisp chỉ giáo vớ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
5 phút trước, mr.thanh2610 đã nói:

Cái đó mình cũng đã thử rồi, nhưng không được bạn à, vì chắc phải chỉnh trong lisp nhưng mình không biết viết code nên không chỉnh sửa được, không có cao nhân nào biết về lisp chỉ giáo với ạ

Mình thử vẫn được mà, có lẽ nào do ă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
(defun c:SF(/ p dt ans ten sc ang dt)
(setvar "cmdecho" 0)
(initget "B B1 B2 BK G GD GD1 GL GL1 GL2 D D1 C K N N1 TO GO GO1")
(setq ans (getkword "\n Chon kieu hatch < B/B1/B2/BK/G/GD/GD1/GL/GL1/GL2/D/D1/C/K/N/N1/TO/GO/GO1 > : "))

(if (= ans "B") 
(progn 
(setq ten "AR-CONC" sc 20.0 ang 0.0
ten2 "ANSI32" sc2 200.0 ang 0.0) 
)
)

(if (= ans "B1") 
(progn
(setq ten "AR-CONC" sc 20.0 ang 0.0)
)
)

(if (= ans "B2") 
(progn
(setq ten "GRAVEL" sc 100.0 ang 0.0)
)
)

(if (= ans "BK") 
(progn
(setq ten "SOLID" sc 200.0 ang 0.0)
)
)

(if (= ans "G") 
(progn
(setq ten "ANSI31" sc 400.0 ang 0.0)
)
)

(if (= ans "GD") 
(progn
(setq ten "AR-B816" sc 10.0 ang 0.0)
)
)

(if (= ans "GD1") 
(progn
(setq ten "FLGSTONE" sc 500.0 ang 0.0)
)
)

(if (= ans "GL") 
(progn
(setq ten "NET" sc 1500.0 ang 0.0)
)
)

(if (= ans "GL1") 
(progn
(setq ten "ANGLE" sc 700.0 ang 0.0)
)
)

(if (= ans "GL2") 
(progn
(setq ten "AR-HBONE" sc 20.0 ang 0.0)
)
)

(if (= ans "D") 
(progn
(setq ten "HOUND" sc 500.0 ang 45.0)
)
)


(if (= ans "D1") 
(progn
(setq ten "EARTH" sc 500.0 ang 45.0)
)
)

(if (= ans "C") 
(progn
(setq ten "AR-SAND" sc 20.0 ang 0.0)
)
)



(if (= ans "K") 
(progn
(setq ten "AR-RROOF" sc 500.0 ang 45.0)
)
)



(if (= ans "N") 
(progn
(setq ten "AR-RSHKE" sc 30.0 ang 0.0)
)
)


(if (= ans "N1") 
(progn
(setq ten "SPANTILE" sc 400.0 ang 0.0)
)
)





(if (= ans "TO") 
(progn
(setq ten "ANSI32" sc 200.0 ang 45.0)
)
)




(if (= ans "GO") 
(progn
(setq ten "WOOD8" sc 700.0 ang 0.0)
)
)



(if (= ans "GO1") 
(progn
(setq ten "WOOD2" sc 500.0 ang 0.0)
)
)

 (setvar "hpname" ten)
 (setvar "hpscale" sc)
 (setvar "hpang" ang)

(initdia)
(command "hatch")
(while (< 0 (getvar "CMDACTIVE"))
(command pause)
) 

(princ)
)

Sửa 1 xí . Lệnh và lựa chọn kiểu hatch như cũ. chọn xong trả lại cho lệnh hatch của cad muốn chọn gì thì chọn.

 

  • 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
10 giờ trước, duy782006 đã nói:

(defun c:SF(/ p dt ans ten sc ang dt)
(setvar "cmdecho" 0)
(initget "B B1 B2 BK G GD GD1 GL GL1 GL2 D D1 C K N N1 TO GO GO1")
(setq ans (getkword "\n Chon kieu hatch < B/B1/B2/BK/G/GD/GD1/GL/GL1/GL2/D/D1/C/K/N/N1/TO/GO/GO1 > : "))

(if (= ans "B") 
(progn 
(setq ten "AR-CONC" sc 20.0 ang 0.0
ten2 "ANSI32" sc2 200.0 ang 0.0) 
)
)

(if (= ans "B1") 
(progn
(setq ten "AR-CONC" sc 20.0 ang 0.0)
)
)

(if (= ans "B2") 
(progn
(setq ten "GRAVEL" sc 100.0 ang 0.0)
)
)

(if (= ans "BK") 
(progn
(setq ten "SOLID" sc 200.0 ang 0.0)
)
)

(if (= ans "G") 
(progn
(setq ten "ANSI31" sc 400.0 ang 0.0)
)
)

(if (= ans "GD") 
(progn
(setq ten "AR-B816" sc 10.0 ang 0.0)
)
)

(if (= ans "GD1") 
(progn
(setq ten "FLGSTONE" sc 500.0 ang 0.0)
)
)

(if (= ans "GL") 
(progn
(setq ten "NET" sc 1500.0 ang 0.0)
)
)

(if (= ans "GL1") 
(progn
(setq ten "ANGLE" sc 700.0 ang 0.0)
)
)

(if (= ans "GL2") 
(progn
(setq ten "AR-HBONE" sc 20.0 ang 0.0)
)
)

(if (= ans "D") 
(progn
(setq ten "HOUND" sc 500.0 ang 45.0)
)
)


(if (= ans "D1") 
(progn
(setq ten "EARTH" sc 500.0 ang 45.0)
)
)

(if (= ans "C") 
(progn
(setq ten "AR-SAND" sc 20.0 ang 0.0)
)
)



(if (= ans "K") 
(progn
(setq ten "AR-RROOF" sc 500.0 ang 45.0)
)
)



(if (= ans "N") 
(progn
(setq ten "AR-RSHKE" sc 30.0 ang 0.0)
)
)


(if (= ans "N1") 
(progn
(setq ten "SPANTILE" sc 400.0 ang 0.0)
)
)





(if (= ans "TO") 
(progn
(setq ten "ANSI32" sc 200.0 ang 45.0)
)
)




(if (= ans "GO") 
(progn
(setq ten "WOOD8" sc 700.0 ang 0.0)
)
)



(if (= ans "GO1") 
(progn
(setq ten "WOOD2" sc 500.0 ang 0.0)
)
)

 (setvar "hpname" ten)
 (setvar "hpscale" sc)
 (setvar "hpang" ang)

(initdia)
(command "hatch")
(while (< 0 (getvar "CMDACTIVE"))
(command pause)
) 

(princ)
)

Sửa 1 xí . Lệnh và lựa chọn kiểu hatch như cũ. chọn xong trả lại cho lệnh hatch của cad muốn chọn gì thì chọn.

 

Cảm ơn ông anh đồng hương nhé, hj, có dịp về quê gặp cà phê hậu tạ ^_^, em ở Nghĩa Hà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
8 giờ trước, mr.thanh2610 đã nói:

Mà cho em hỏi thêm xíu, sao chỉnh angle trong lisp là 45 mà sang đây nó đổi thành 58 hết cho hatch nào có góc 45 vậy anh

loi.PNG

Chắc phải đổi độ về radian

  • 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
2 giờ trước, mr.thanh2610 đã nói:

Cảm ơn bạn, mình đã thử và thành công, mà có cách nào để chỉnh độ thành độ không nhỉ

Hình như trong lisp đơn vị đo góc là radian thì phả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

Mình không hiểu code lắm nên hỏi anh em để chỉnh đơn vị bên lisp là độ trùng với đơn vị bên bản vẽ ấy mà, chứ mỗi lần chỉnh góc là phải quy đổ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
28 phút trước, mr.thanh2610 đã nói:

Mình không hiểu code lắm nên hỏi anh em để chỉnh đơn vị bên lisp là độ trùng với đơn vị bên bản vẽ ấy mà, chứ mỗi lần chỉnh góc là phải quy đổi

Sửa lại cho bạn nhập góc theo độ nhé:

(defun c:SF(/ p dt ans ten sc dt angrad)
(setvar "cmdecho" 0)
(initget "B B1 B2 BK G GD GD1 GL GL1 GL2 D D1 C K N N1 TO GO GO1")
(setq ans (getkword "\n Chon kieu hatch < B/B1/B2/BK/G/GD/GD1/GL/GL1/GL2/D/D1/C/K/N/N1/TO/GO/GO1 > : "))
(or (and ang (or (= (type ang) 'int) (= (type ang) 'real))) (setq ang 0.00))
(setq ang (cond ((getreal (strcat "\nNhap goc theo do <" (rtos ang 2 2) ">: "))) (ang)))
(setq angrad (*(/ ang 180) pi))
(if (= ans "B") 
(progn 
(setq ten "AR-CONC" sc 20.0
ten2 "ANSI32" sc2 200.0) 
)
)
(if (= ans "B1") 
(progn
(setq ten "AR-CONC" sc 20.0)
)
)
(if (= ans "B2") 
(progn
(setq ten "GRAVEL" sc 100.0)
)
)
(if (= ans "BK") 
(progn
(setq ten "SOLID" sc 200.0)
)
)
(if (= ans "G") 
(progn
(setq ten "ANSI31" sc 400.0)
)
)
(if (= ans "GD") 
(progn
(setq ten "AR-B816" sc 10.0)
)
)
(if (= ans "GD1") 
(progn
(setq ten "FLGSTONE" sc 500.0)
)
)
(if (= ans "GL") 
(progn
(setq ten "NET" sc 1500.0)
)
)
(if (= ans "GL1") 
(progn
(setq ten "ANGLE" sc 700.0)
)
)
(if (= ans "GL2") 
(progn
(setq ten "AR-HBONE" sc 20.0)
)
)
(if (= ans "D") 
(progn
(setq ten "HOUND" sc 500.0)
)
)
(if (= ans "D1") 
(progn
(setq ten "EARTH" sc 500.0)
)
)
(if (= ans "C") 
(progn
(setq ten "AR-SAND" sc 20.0)
)
)
(if (= ans "K") 
(progn
(setq ten "AR-RROOF" sc 500.0)
)
)
(if (= ans "N") 
(progn
(setq ten "AR-RSHKE" sc 30.0)
)
)
(if (= ans "N1") 
(progn
(setq ten "SPANTILE" sc 400.0)
)
)
(if (= ans "TO") 
(progn
(setq ten "ANSI32" sc 200.0)
)
)
(if (= ans "GO") 
(progn
(setq ten "WOOD8" sc 700.0)
)
)
(if (= ans "GO1") 
(progn
(setq ten "WOOD2" sc 500.0)
)
)
 (setvar "hpname" ten)
 (setvar "hpscale" sc)
 (setvar "hpang" angrad)

(initdia)
(command "hatch")
(while (< 0 (getvar "CMDACTIVE"))
(command pause)
) 
(princ)
)

 

  • 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
21 giờ trước, huunhantvxdts đã nói:

Sửa lại cho bạn nhập góc theo độ nhé:


(defun c:SF(/ p dt ans ten sc dt angrad)
(setvar "cmdecho" 0)
(initget "B B1 B2 BK G GD GD1 GL GL1 GL2 D D1 C K N N1 TO GO GO1")
(setq ans (getkword "\n Chon kieu hatch < B/B1/B2/BK/G/GD/GD1/GL/GL1/GL2/D/D1/C/K/N/N1/TO/GO/GO1 > : "))
(or (and ang (or (= (type ang) 'int) (= (type ang) 'real))) (setq ang 0.00))
(setq ang (cond ((getreal (strcat "\nNhap goc theo do <" (rtos ang 2 2) ">: "))) (ang)))
(setq angrad (*(/ ang 180) pi))
(if (= ans "B") 
(progn 
(setq ten "AR-CONC" sc 20.0
ten2 "ANSI32" sc2 200.0) 
)
)
(if (= ans "B1") 
(progn
(setq ten "AR-CONC" sc 20.0)
)
)
(if (= ans "B2") 
(progn
(setq ten "GRAVEL" sc 100.0)
)
)
(if (= ans "BK") 
(progn
(setq ten "SOLID" sc 200.0)
)
)
(if (= ans "G") 
(progn
(setq ten "ANSI31" sc 400.0)
)
)
(if (= ans "GD") 
(progn
(setq ten "AR-B816" sc 10.0)
)
)
(if (= ans "GD1") 
(progn
(setq ten "FLGSTONE" sc 500.0)
)
)
(if (= ans "GL") 
(progn
(setq ten "NET" sc 1500.0)
)
)
(if (= ans "GL1") 
(progn
(setq ten "ANGLE" sc 700.0)
)
)
(if (= ans "GL2") 
(progn
(setq ten "AR-HBONE" sc 20.0)
)
)
(if (= ans "D") 
(progn
(setq ten "HOUND" sc 500.0)
)
)
(if (= ans "D1") 
(progn
(setq ten "EARTH" sc 500.0)
)
)
(if (= ans "C") 
(progn
(setq ten "AR-SAND" sc 20.0)
)
)
(if (= ans "K") 
(progn
(setq ten "AR-RROOF" sc 500.0)
)
)
(if (= ans "N") 
(progn
(setq ten "AR-RSHKE" sc 30.0)
)
)
(if (= ans "N1") 
(progn
(setq ten "SPANTILE" sc 400.0)
)
)
(if (= ans "TO") 
(progn
(setq ten "ANSI32" sc 200.0)
)
)
(if (= ans "GO") 
(progn
(setq ten "WOOD8" sc 700.0)
)
)
(if (= ans "GO1") 
(progn
(setq ten "WOOD2" sc 500.0)
)
)
 (setvar "hpname" ten)
 (setvar "hpscale" sc)
 (setvar "hpang" angrad)

(initdia)
(command "hatch")
(while (< 0 (getvar "CMDACTIVE"))
(command pause)
) 
(princ)
)

 

Cảm ơn bạn nhiều 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
21 giờ trước, huunhantvxdts đã nói:

Sửa lại cho bạn nhập góc theo độ nhé:


(defun c:SF(/ p dt ans ten sc dt angrad)
(setvar "cmdecho" 0)
(initget "B B1 B2 BK G GD GD1 GL GL1 GL2 D D1 C K N N1 TO GO GO1")
(setq ans (getkword "\n Chon kieu hatch < B/B1/B2/BK/G/GD/GD1/GL/GL1/GL2/D/D1/C/K/N/N1/TO/GO/GO1 > : "))
(or (and ang (or (= (type ang) 'int) (= (type ang) 'real))) (setq ang 0.00))
(setq ang (cond ((getreal (strcat "\nNhap goc theo do <" (rtos ang 2 2) ">: "))) (ang)))
(setq angrad (*(/ ang 180) pi))
(if (= ans "B") 
(progn 
(setq ten "AR-CONC" sc 20.0
ten2 "ANSI32" sc2 200.0) 
)
)
(if (= ans "B1") 
(progn
(setq ten "AR-CONC" sc 20.0)
)
)
(if (= ans "B2") 
(progn
(setq ten "GRAVEL" sc 100.0)
)
)
(if (= ans "BK") 
(progn
(setq ten "SOLID" sc 200.0)
)
)
(if (= ans "G") 
(progn
(setq ten "ANSI31" sc 400.0)
)
)
(if (= ans "GD") 
(progn
(setq ten "AR-B816" sc 10.0)
)
)
(if (= ans "GD1") 
(progn
(setq ten "FLGSTONE" sc 500.0)
)
)
(if (= ans "GL") 
(progn
(setq ten "NET" sc 1500.0)
)
)
(if (= ans "GL1") 
(progn
(setq ten "ANGLE" sc 700.0)
)
)
(if (= ans "GL2") 
(progn
(setq ten "AR-HBONE" sc 20.0)
)
)
(if (= ans "D") 
(progn
(setq ten "HOUND" sc 500.0)
)
)
(if (= ans "D1") 
(progn
(setq ten "EARTH" sc 500.0)
)
)
(if (= ans "C") 
(progn
(setq ten "AR-SAND" sc 20.0)
)
)
(if (= ans "K") 
(progn
(setq ten "AR-RROOF" sc 500.0)
)
)
(if (= ans "N") 
(progn
(setq ten "AR-RSHKE" sc 30.0)
)
)
(if (= ans "N1") 
(progn
(setq ten "SPANTILE" sc 400.0)
)
)
(if (= ans "TO") 
(progn
(setq ten "ANSI32" sc 200.0)
)
)
(if (= ans "GO") 
(progn
(setq ten "WOOD8" sc 700.0)
)
)
(if (= ans "GO1") 
(progn
(setq ten "WOOD2" sc 500.0)
)
)
 (setvar "hpname" ten)
 (setvar "hpscale" sc)
 (setvar "hpang" angrad)

(initdia)
(command "hatch")
(while (< 0 (getvar "CMDACTIVE"))
(command pause)
) 
(princ)
)

 

Sao bạn không sửa getread thành getangle là được rồi 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
8 phút trước, ngokiet đã nói:

Sao bạn không sửa getread thành getangle là được rồi mà.

Giờ biết thêm hàm này lâu nay đâu biết mà sử dụng

Cám ơn bạn nhiều!!!!

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
23 giờ trước, mr.thanh2610 đã nói:

Cảm ơn bạn nhiều nhé....

Mình sửa lại cho bạn theo phiên bản gốc nè. Bạn có thể bổ sung hay thêm bớt các kiểu tùy ý và dễ sửa hơn.

(có thể chồng nhiều loại hatch như kiểu bêton)

 

Nếu bạn sửa (command "hatch") Thành  (command "-hatch")

Thì nó mặc định là pick điểm. Còn nhấn S sẽ là select.

 

 

 

sf-hatchnhanh.lsp

  • 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
10 giờ trước, ngokiet đã nói:

(defun c:SF(/ en1 list1 i)
  (setq en1  (entlast)
	list1 '(("B"   ("ANSI32"   200  0.0) ("AR-CONC" 20 0.0))
		("B1"  ("AR-CONC"   20  0.0))
		("B2"  ("GRAVEL"   100  0.0))
		("BK"  ("SOLID"    200  0.0))
		("G"   ("ANSI31"   400  0.0))
		("GD"  ("AR-B816"   10  0.0))
		("GD1" ("FLGSTONE" 500  0.0))
		("GL"  ("NET"     1500  0.0))
		("GL1" ("ANGLE"    400  0.0))
		("GL2" ("AR-HBONE"  20  0.0))
		("D"   ("HOUND"    500 45.0))
		("D1"  ("EARTH"    500 45.0))
		("C"   ("AR-SAND"   20  0.0))
		("K"   ("AR-RROOF" 500 45.0))
		("N"   ("AR-RSHKE"  30  0.0))
		("N1"  ("SPANTILE" 400  0.0))
		("TO"  ("ANSI32"   200 45.0))
		("GO"  ("WOOD8"    700  0.0))
		("GO1" ("WOOD2" 500 0.0))
		
		))
	
  (setvar "cmdecho" 0)
  (initget (apply 'strcat (mapcar '(lambda(x) (strcat (car x) " ")) list1)))
  (if (setq i (vl-position
		(getkword (strcat "\n Chon kieu hatch < "
				  (vl-string-right-trim "/" (apply 'strcat (mapcar '(lambda(x) (strcat (car x) "/")) list1)))
				  " > : "))
		(mapcar 'car list1)))
    (progn
      (mapcar 'setvar '(hpname hpscale hpang)
	      (list (caar (setq i (cdr (nth i list1))))
		    (cadar i)
		    (*(/ (caddar i) 180) pi)))
      (initdia)
      (command "hatch")
      (while (< 0 (getvar "CMDACTIVE"))
	(command pause))
      (if (/= en1 (setq en1 (entlast)))
	(while (setq i (cdr i))
	  (entmakex
	    (mapcar '(lambda(x)
		       (cond ((eq (car x) 2) (cons 2 (caar i)))
			     ((eq (car x) 41) (cons 41 (cadar i)))
			     ((eq (car x) 52) (cons 52 (*(/(caddar i)180)pi)))
			     (T x)))
		    (entget en1)))
	  (setq i (cdr i))))))
  (princ))

Mình sửa lại cho bạn theo phiên bản gốc nè. Bạn có thể bổ sung hay thêm bớt các kiểu tùy ý và dễ sửa hơn.

(có thể chồng nhiều loại hatch như kiểu bêton)

 

Nếu bạn sửa (command "hatch") Thành  (command "-hatch")

Thì nó mặc định là pick điểm. Còn nhấn S sẽ là select.

 

 

 

Cảm ơn bạn nhiều nha, cái này rất đúng ý mình, bạn thật có tâ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
Vào lúc 17/6/2019 tại 16:56, ngokiet đã nói:

Mình sửa lại cho bạn theo phiên bản gốc nè. Bạn có thể bổ sung hay thêm bớt các kiểu tùy ý và dễ sửa hơn.

(có thể chồng nhiều loại hatch như kiểu bêton)

 

Nếu bạn sửa (command "hatch") Thành  (command "-hatch")

Thì nó mặc định là pick điểm. Còn nhấn S sẽ là select.

 

 

 

sf-hatchnhanh.lsp

Bạn sửa giúp mình khi nhấn S thì có thể quét được nhiều đối tượng thay vì chọn tùng đối tượng không, thank !

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

×