Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Nguyen Hoanh

Viết Lisp theo yêu cầu

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

Bạn copy file đó vào thư mục support của AutoCAD.

 

Sau đó, thay vì gõ lệnh lisp mà bạn yêu cầu, bạn dùng lệnh insert rồi gõ tên file (không cần đuôi dwg) vào mục block name.

 

cảm ơn Pác rất nhiều, e học đc rất nhiều từ pac đó, Còn cái kia, a viết lisp cho e đc ko, vì lisp thống kê đó e định dùng để chia sẻ cho những người khác, mà ko phải ai cũng biết gõ lệnh insert, gõ đúng tên file cad, rồi còn phải Explode file cad trong insert nữa chứ!!!!!!

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ên lệnh là XDD (xác định dốc).

 

Cách sử dụng như sau:

Trước khi sử dụng, hãy download file zip này về và bung nén rồi copy file muitendoc.dwg vào thư mục support: <a href="http://www.cadviet.com/upfiles/muitendoc.zip" target="_blank">http://www.cadviet.com/upfiles/muitendoc.zip</a>. Mục đích là tạo block mũi tên để chương trình chèn vào.

Bước 1. Khi gọi lệnh XDD, chương trình sẽ yêu cầu bạn pick vào một pline đường tim. Chương trình sẽ tự động nhận ra text cao độ. Và highlight 2 đối tượng mà chương trình tự động tìm được.

Bước 2. Nếu 2 đối tượng mà chương trình tìm là phù hợp, bạn chỉ cần pick vào tọa độ điểm chèn kết quả.

Bước 3 (nếu cần). Nếu 2 đối tượng mà chương trình tìm tại bước 1 không đúng, bạn hãy nhấn enter, chương trình sẽ yêu cầu bạn chọn 2 đối tượng text cao độ. Sau đó chương trình sẽ hỏi tọa độ điểm chèn như bước 2.

 

(defun c:xdd (/ dc)
 (if (not (tblsearch "block" "muitendoc"))
   (alert
     "\nBan phai copy file muitendoc.dwg tu: [url="http://www.cadviet.com/upfiles/muitendoc.dwg"]<a href="http://www.cadviet.com/upfiles/muitendoc.dwg" target="_blank">http://www.cadviet.com/upfiles/muitendoc.dwg[/url]</a> vao thu muc support!"
   )
   (progn
     (setq
sel  (entsel "\nHay pick vao pline: ")
ent  (car sel)
len  (vla-get-length (vlax-ename->vla-object ent))
lst  (vl-remove	nil
		(mapcar	'(lambda (x)
			   (if (= (car x) 10)
			     (cdr x)
			     nil
			   )
			 )
			(entget ent)
		)
     )
p1   (car lst)
p2   (car (reverse lst))
sst  (ssget "X" '((0 . "TEXT") (8 . "1-cotduong")))
lstt (ss2ent sst)
lstt (mapcar '(lambda (e)
		(setq p	 (cdr (assoc 10 (entget e)))
		      d1 (distance p p1)
		      d2 (distance p p2)
		)
		(list e d1 d2)
	      )
	     lstt
     )
e1   (caar
       (vl-sort lstt '(lambda (x1 x2) (< (cadr x1) (cadr x2))))
     )
e2   (caar
       (vl-sort lstt '(lambda (x1 x2) (< (caddr x1) (caddr x2))))
     )
     )

     (redraw e1 3)
     (redraw e2 3)
     (while (not dc)
(setq dc
       (getpoint
	 "\nHay vao diem chen ket qua, hoac nhan enter de chon lai 2 text: "
       )
)
(if (not dc)
  (progn
    (redraw e1 4)
    (redraw e2 4)
    (setq e1 (car (entsel "\nVao text dau: ")))
    (redraw e1 3)
    (setq e2 (car (entsel "\nVao text cuoi: "))
    )
  )
)
     )
     (redraw e1 4)
     (redraw e2 4)
     (setq c1	(atof (cdr (assoc 1 (entget e1))))
    c2	(atof (cdr (assoc 1 (entget e2))))
    dh	(- c2 c1)
    i	(/ dh len)
    ang	(* (angle p2 p1) (/ 180.0 pi))
     )
     (if (< i 0.0) (setq i (abs i) ang (+ ang 180.0)))
     (putvalue dc ang i len)
   )
 )
 (princ)
)
(defun putvalue	(p a i l)
 (command ".insert"
   "muitendoc"
   p
   1.0
   1.0
   ang
   (rtos l 2 2)
   (rtos i 2 3)
 )
)

(defun ss2ent (ss / sodt index lstent)
 (setq
   sodt  (if ss
    (sslength ss)
    0
  )
   index 0
 )
 (repeat sodt
   (setq ent	 (ssname ss index)
  index	 (1+ index)
  lstent (cons ent lstent)
   )
 )
 (reverse lstent)
)

 

Bác ơi, đợt vừa rồi e bận đi công tác chưa dùng được, hôm nay test thử thì trước tiên là nó cứ báo chưa copy file vào /support mặc dù e đã copy rồi, dùng cả cách nhét qua Tool/Option/Files cũng ko được. Sau đó em phải dùng cách nông dân là insert tạm 1 cái block có tên như thế vào bản vẽ, dùng /xdd rồi, chọn pline rồi thì nó hiện

Hay pick vao pline: ; error: bad argument type: lentityp nil

E ko biết tại sao nữa, e dùng Cad2004. Bác thử chk lại hộ e với.

thanks Bá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
Bác ơi, đợt vừa rồi e bận đi công tác chưa dùng được, hôm nay test thử thì trước tiên là nó cứ báo chưa copy file vào /support mặc dù e đã copy rồi, dùng cả cách nhét qua Tool/Option/Files cũng ko được. Sau đó em phải dùng cách nông dân là insert tạm 1 cái block có tên như thế vào bản vẽ, dùng /xdd rồi, chọn pline rồi thì nó hiện

Hay pick vao pline: ; error: bad argument type: lentityp nil

E ko biết tại sao nữa, e dùng Cad2004. Bác thử chk lại hộ e với.

thanks Bác.

Bạn đã pick đúng pline chưa?

 

Bạn có thể upload file bạn chạy bị lỗi lên chưa?

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ó nghĩa là e có 1 chương trình thống kê thép, nó bắt e phải mở File dwg mà nó cho rồi sửa các thông số thép trên đó, bất tiện ở chỗ là cứ mỗi lần muốn thống kê thép lại phải mở thêm 1 cửa sổ cad nữa, khác với cửa sổ đang làm việc để thông kê thép, E từng thấy 1 lisp chỉ cần gõ lệnh thì sẽ insert đc bảng thống kê đó lên bản vẽ mình đang làm việc!

Giúp mình ĐI các 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
Giúp mình ĐI các Bạn!!!!!!!!!!

 

Giúp rồi mà:

Bạn copy file đó vào thư mục support của AutoCAD.

 

Sau đó, thay vì gõ lệnh lisp mà bạn yêu cầu, bạn dùng lệnh insert rồi gõ tên file (không cần đuôi dwg) vào mục block name.

Bạn cứ làm như tôi nói, không phải lisp làm gì cho mệt công appload. Hoặc bạn cứ quan niệm lisp tôi cho bạn có lệnh là 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
Giúp rồi mà:

 

Bạn cứ làm như tôi nói, không phải lisp làm gì cho mệt công appload. Hoặc bạn cứ quan niệm lisp tôi cho bạn có lệnh là I.

Như thế này có đc không anh, nhưng khổ nỗi nó bị Block lại 1 khố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
Giúp rồi mà:

 

Bạn cứ làm như tôi nói, không phải lisp làm gì cho mệt công appload. Hoặc bạn cứ quan niệm lisp tôi cho bạn có lệnh là I.

Như thế này có đc không anh, nhưng khổ nỗi nó bị Block lại 1 khối

 

(defun c:btk()

(setvar "cmdecho" 0)

(command "insert" "bangtk" (list 0 0) "1" "1" "0")

(princ "\nLenh tu dong lap bang thong ke. BTK")

(princ "\nOK...")

(princ)

)

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ảm ơn Pác rất nhiều, e học đc rất nhiều từ pac đó, Còn cái kia, a viết lisp cho e đc ko, vì lisp thống kê đó e định dùng để chia sẻ cho những người khác, mà ko phải ai cũng biết gõ lệnh insert, gõ đúng tên file cad, rồi còn phải Explode file cad trong insert nữa chứ!!!!!!

 

http://www.cadviet.com/forum/index.php?sho...mp;hl=duy782006

 

Bạn xem ở đây có vài cái cho bạn lựa chọn đấy.

  • 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
Ban xai lenh textmask cua Express ay. Muc dich nhu ban mong muon. Nhung cai nay co nhuoc diem la dung wipeout de che fan hatch cua text. Nhung có khi move text thì wipeout rớt lại thì vẫn bị nhu tình trạng hatch nằm chung với text. Song vẫn khác phuc đc. <_<

Cám ơn bác nhưng cái đó chỉ dùng cho text được thôi, em muốn bất cứ một cái gì cũng được ví dụ như hình tròn, hcn.....bác giúp thêm nhé. 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
Mình muốn có 1 lisp, khi load lisp thì tự động format usb (ổ F). Bạn nào giúp mình nhé.

 

 

Cái này thì VBA làm được. LISP cũng được nếu dùng qua shell. Nhưng mà bạn cần như thế để làm gì???

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 muốn có 1 lisp, khi load lisp thì tự động format usb (ổ F). Bạn nào giúp mình nhé.

Khó đấy, không làm được đâu, vì sẽ có 1 trường hợp báo lỗi "không format đượ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

Các bác viết dùm em lisp như thế này: Em đang cần in một lúc rất nhiều bản vẽ có khung tên với kích thước rất khác nhau, khi in em phải canh lề trái để đóng thành tập. Vì vậy mỗi lần in một bản vẽ em lại phải chọn một tỷ lệ in khác nhau (hoặc là phải kẻ một đường song song với lề trái để khi quét vào đó và để auto thì mới canh lề được) rất lâu nhiều khi một bản vẽ chọn mấy lần mới được tỷ lệ thích hợp. Nhờ các bác viết dùm lisp mà khi in chọn windowns xong quét vào khung tên mà tự canh lề được: chẳng hạn như lề trái là 25mm, còn lại là 5mm. Thanhk!

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ác bác viết dùm em lisp như thế này: Em đang cần in một lúc rất nhiều bản vẽ có khung tên với kích thước rất khác nhau, khi in em phải canh lề trái để đóng thành tập. Vì vậy mỗi lần in một bản vẽ em lại phải chọn một tỷ lệ in khác nhau (hoặc là phải kẻ một đường song song với lề trái để khi quét vào đó và để auto thì mới canh lề được) rất lâu nhiều khi một bản vẽ chọn mấy lần mới được tỷ lệ thích hợp. Nhờ các bác viết dùm lisp mà khi in chọn windowns xong quét vào khung tên mà tự canh lề được: chẳng hạn như lề trái là 25mm, còn lại là 5mm. Thanhk!

Bạn hãy search từ MPLOT trên diễn đàn rồi download về và dù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
Cái này thì VBA làm được. LISP cũng được nếu dùng qua shell. Nhưng mà bạn cần như thế để làm gì???

 

Vấn đề này xin bác VKCường nói rõ hơn!

Mong tin bá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
Rất mong các bạn viết cho mình xin lisp vẽ đoạn dư cho đường thẳng

C:\Documents and Settings\user\Desktop\GOI XIN LISP.jpg

 

 

Cái ảnh của bạn không xem được:

Bạn phải làm rỏ ý sau:

-Đường thẳng có rồi hay vẽ mới.

-Đoạn dư riêng hay dình chung với đường thẳng chính, layer như thế nào, tỉ lệ đoạn dư ra sao.

Tôi nghỉ là ít ra phải có bấy nhiêu thì mọi người mới có thể giúp được bạ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
Bạn có thể post yêu cầu về autolisp ở topic này.

Bác Nguyen Hoanh oi! Em khoái cái món Autolisp này của Bác lắm! Cảm ơn các Bác đã khai sinh ra trang Web để cho em down Lisp của các Bác về dùng <_< và đem lại hiệu quả công việc cao. Hôm nay em có ý tưởng này mong các Bác giúp em với:

-Ghi cao độ + ký hiệu mũi tên cao độ của điểm thứ 2 thông qua điểm thứ 1. Khi đã có text cao độ + ký hiệu mũi tên cao độ của điểm 1. Bằng cách tự chọn điểm đặt kết quả và đo khoảng cách theo phương Y từ điểm 1 đến điểm 2 trên bản vẽ.

Mục đích của lisp này là điền cao độ + ký hiệu mũi tên cao độ các điểm khác. Khi đã có trước cao độ + ký hiệu mũi tên cao độ 1 điểm và khoảng cách theo phương Y giữa điểm 1 và các điểm còn lạ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
Bác Nguyen Hoanh oi! Em khoái cái món Autolisp này của Bác lắm! Cảm ơn các Bác đã khai sinh ra trang Web để cho em down Lisp của các Bác về dùng <_< và đem lại hiệu quả công việc cao. Hôm nay em có ý tưởng này mong các Bác giúp em với:

-Ghi cao độ + ký hiệu mũi tên cao độ của điểm thứ 2 thông qua điểm thứ 1. Khi đã có text cao độ + ký hiệu mũi tên cao độ của điểm 1. Bằng cách tự chọn điểm đặt kết quả và đo khoảng cách theo phương Y từ điểm 1 đến điểm 2 trên bản vẽ.

Mục đích của lisp này là điền cao độ + ký hiệu mũi tên cao độ các điểm khác. Khi đã có trước cao độ + ký hiệu mũi tên cao độ 1 điểm và khoảng cách theo phương Y giữa điểm 1 và các điểm còn lại.

Bạn hãy upload 1 file dwg ví dụ!

 

Trong đó có 2 phần, 1 phần là trước khi thực thi lisp, 1 phần là sau khi thực thi lisp.

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ờ mọi người viết cho tôi một lisp như thế này, chọn 2 đường thẳng thì chúng tự cắt nhau tại một điểm, trong trường hợp song song thì lisp báo lỗi. nếu có thể thì đo luôn góc tạo bởi 2 đường thẳng đó. và viết ra màn 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
Nhờ mọi người viết cho tôi một lisp như thế này, chọn 2 đường thẳng thì chúng tự cắt nhau tại một điểm, trong trường hợp song song thì lisp báo lỗi. nếu có thể thì đo luôn góc tạo bởi 2 đường thẳng đó. và viết ra màn hình

- chúng tự cắt nhau tại một điểm, trong trường hợp song song thì lisp báo lỗi: Bạn dùng lệnh fillet

- nếu có thể thì đo luôn góc tạo bởi 2 đường thẳng đó: bạn dùng lệnh dimangular

  • 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ám ơn bác nhưng cái đó chỉ dùng cho text được thôi, em muốn bất cứ một cái gì cũng được ví dụ như hình tròn, hcn.....bác giúp thêm nhé. thank!

 

 

Bác có voi đòi 2 bà trưng ... hehê. Mình ko chắc wipeout làm dc cho tất cả các trường hợp. Text mask chẳng qua nó cũng làm từ wipeout mà ra cả thôi.

 

Command: WIPEOUT

Specify first point or [Frames/Polyline] <Polyline>:

Lúc này chọn hình Pline kín vẽ trước hoặc nhập điểm để vẽ. Bạn tham khao ở 2 hv sau:1.bmp

2.bmp

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

×