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

Viết Lisp theo yêu cầu

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

cám ơn bạn đã quan tâm, đơn giản là đưa đối tượng đó về layer vừa tạo thui

Mình đã check kỹ lại rồi. Không có lỗi gì trong đoạn code này :

Lệnh là DLM

(defun c:DLM () 
(prompt "Doi cac doi tuong chon sang layer moi ")
(princ "\n Change: Doi sang layer moi")
(setq tue (ssget))
(if (null tue)
(progn 
(princ "\nLoi : Khong co doi tuong nao duoc chon.")
(exit)
)
)
(command "layer" "m" "Newlayer" "c" "3" "" "" "")
(command "_.change" tue "" "P" "la" "newlayer" "") 
(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

Bác Hoành ơi có thể viết giúp em Lisp với ứng dụng như sau:

- Dùng window quét một biên dạng bất kì (chủ yếu xuất từ 3D qua) sẽ lấy được (Xmax,Ymax) và (Xmin,Ymin) của biên dạng đó.(Biên dạng là tập hơp nhiều line, spline.... được xuất từ 3D qua.)

Mụch đích: Sử dụng để cắt phôi trong thiết kế khuôn mẫu.

Mình đang rất cần nó, xin các cao thủ cố gắng giúp mình với. Xin cảm ơn rất 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
Bác Hoành ơi có thể viết giúp em Lisp với ứng dụng như sau:

- Dùng window quét một biên dạng bất kì (chủ yếu xuất từ 3D qua) sẽ lấy được (Xmax,Ymax) và (Xmin,Ymin) của biên dạng đó.(Biên dạng là tập hơp nhiều line, spline.... được xuất từ 3D qua.)

Mụch đích: Sử dụng để cắt phôi trong thiết kế khuôn mẫu.

Mình đang rất cần nó, xin các cao thủ cố gắng giúp mình với. Xin cảm ơn rất nhiều.!

bạn hãy upload 1 file ví dụ lên để mọi người biết được tập đối tượng của bạn gồm những gì,

chứ line, spline,... thì không rõ trong dấu ba chấm bao gồm những đối tượng 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
bạn hãy upload 1 file ví dụ lên để mọi người biết được tập đối tượng của bạn gồm những gì,

chứ line, spline,... thì không rõ trong dấu ba chấm bao gồm những đối tượng gì.

 

Em gửi bác một file xuất từ 3D qua.! Mong bác giúp đỡ.

Cám ơn bác nhiều.

Đây là link: http://www.cadviet.com/upfiles/DE_CHAN.rar

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

Chào cả nhà.

Xin các cao thủ giup giùm tôi một doạn lisp thực hiện chuổi lệnh sau:

Khi tôi chọn 01 hoặc nhiều bock có tên khác nhau thì các block đó sẽ được định nghĩa lại với :

- Các object bên trong block đó có các thuộc tính:

+ Layer : 0,

+ Linetype : byblock,

+ Color : byblock,

+ Lineweight : byblock,

+ Linetype scale : 1.000,

+ Thickness : 1.000,

+ Gobal width : 0.00 (nếu là PL)

+ Elevation : 0.00 (nếu là PL)

- Thực hiện các lệnh

+ Overkill các object chồng lên nhau.

+ chuyển các Spline thành Plline. (trong các block không còn các Spline nữa)

+ Nối các PL, L, arc thành Pl nếu có thể.

Xin cảm ơ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
các bạn cho mình hỏi,có cách nào vát góc chỗ đuờng thẳng tiếp xúc với đuờng cong kô mình dùng lênh F nhưng chỉ vát đc các PL với nhau thôi

Vát như thế nào? Bán kính cong bạn cho là bao nhiêu? Hãy upload file lên diễn đàn và nói rõ hơn bạn 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 chỉ giúp,tôi dùng lisp để đặt lệnh tắt nhưng tại sao các lệnh khác thực hiện đc mà dến lệnh TT (TORIENT) thì cad lại ko cho thực hiện lệnh này.

 

(defun c:1 () (Command "move"))

 

(defun c:2 () (Command "trim"))

 

(defun c:EQ () (Command "extend"))

 

(defun c:R () (Command "rotate"))

 

(DEFUN C:mm () (prompt "\nMATCHPROP")

(command "MATCHPROP")

(princ))

(DEFUN C:Q () (prompt "\ndo goc doi tuong")

(command "DIMANGULAR")

(princ))

(DEFUN C:C () (prompt "\nSao chep thanh nhieu doi tuong")

(setq a (ssget)) (command "copy")

(princ))

(DEFUN C:RR () (prompt "\nVE CHU NHAT")

(command "RECTANG")

(princ))

(DEFUN C:CC () (prompt "\nve duong tron")

(command "Circle" )

(princ))

(DEFUN C:3 () (prompt "\nDIM THANG")

(command "DIMLINEAR" )

(princ))

(DEFUN C:D () (prompt "\nDim kich thuoc thang")

(command "Dimlinear" )

(princ))

(DEFUN C:DC () (prompt "\nDim tiep theo")

(command "Dimcontinue" )

(princ))

(DEFUN C:4 () (prompt "\nDim theo duong cheo")

(command "Dimaligned" )

(princ))

(DEFUN C:TT () (prompt "\nQUAY CHU THEO DG THANG")

(command "TORIENT" )

(princ))

(DEFUN C:DR () (prompt "\ndo ban kinh cung tron")

(command "Dimradius" )

(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
nhờ mọi ng chỉ giúp,tôi dùng lisp để đặt lệnh tắt nhưng tại sao các lệnh khác thực hiện đc mà dến lệnh TT (TORIENT) thì cad lại ko cho thực hiện lệnh này.

 

(defun c:1 () (Command "move"))

 

(defun c:2 () (Command "trim"))

 

(defun c:EQ () (Command "extend"))

 

(defun c:R () (Command "rotate"))

 

(DEFUN C:mm () (prompt "\nMATCHPROP")

(command "MATCHPROP")

(princ))

(DEFUN C:Q () (prompt "\ndo goc doi tuong")

(command "DIMANGULAR")

(princ))

(DEFUN C:C () (prompt "\nSao chep thanh nhieu doi tuong")

(setq a (ssget)) (command "copy")

(princ))

(DEFUN C:RR () (prompt "\nVE CHU NHAT")

(command "RECTANG")

(princ))

(DEFUN C:CC () (prompt "\nve duong tron")

(command "Circle" )

(princ))

(DEFUN C:3 () (prompt "\nDIM THANG")

(command "DIMLINEAR" )

(princ))

(DEFUN C:D () (prompt "\nDim kich thuoc thang")

(command "Dimlinear" )

(princ))

(DEFUN C:DC () (prompt "\nDim tiep theo")

(command "Dimcontinue" )

(princ))

(DEFUN C:4 () (prompt "\nDim theo duong cheo")

(command "Dimaligned" )

(princ))

(DEFUN C:TT () (prompt "\nQUAY CHU THEO DG THANG")

(command "TORIENT" )

(princ))

(DEFUN C:DR () (prompt "\ndo ban kinh cung tron")

(command "Dimradius" )

(princ))

Tất cả các câu lệnh trên đều thực thi được trừ lệnh Torient. Vì lệnh này là một lệnh phụ trợ của Express, còn tất cả các lệnh còn lại là các lệnh của CAD chính thống.

Muốn tạo phím tắt cho lệnh này bạn phải vào file Lisp của lệnh này mà đổi, nó nằm trong phụ trợ Express. File này mang tên acettxt.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

Các anh có thể viết giùm em lisp này không:

Nội suy cao độ tại những điểm nằm trên tim đường khi biết cao độ điểm đầu và cuối

_gõ lệnh

_chọn điểm cao độ thựơng lưu

_nhập cao độ thượng lưu

_chọn điểm cao độ hạ lưu

_nhập cao độ hạ lưu

kết quả:

chọn những điểm cần nội suy nằm trên tim đường

kết quả xuất ra dạng dtext (lấy 3 số 0 sau dấu phẩy)

Vì em phải nội suy rất nhiều điểm trên tim đường, mong sớm nhận được lisp của các anh

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.

Chào bạn!

Mình muốn bạn giúp mình một lisp như sau:

- pic chọn một block sau đó quét chọn một vùng bản vẽ, đếm được số block có tên là block đã pic ban đầu.

(Mình là dân TK cơ điện, rất cần đếm các thiết bị điện trên bản vẽ mặt bằng, mà mình thì không thạo lisp)

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
Chào bạn!

Mình muốn bạn giúp mình một lisp như sau:

- pic chọn một block sau đó quét chọn một vùng bản vẽ, đếm được số block có tên là block đã pic ban đầu.

(Mình là dân TK cơ điện, rất cần đếm các thiết bị điện trên bản vẽ mặt bằng, mà mình thì không thạo lisp)

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

Đây bạn. Tên là: bten

 

(Defun c:bten ( )

(prompt "\nChon BLOCK mau.")

(setq DT (car (entsel)))

(setq DT (entget DT))

(setq STNAME (cdr (assoc 2 DT)))

 

(Princ "\nHay chon vung :")

(setq SS (ssget (list (cons 0 "insert")

(cons 2 STNAME)

)

)

)

(if (Null ss)

(princ "\nKhong tim thay doi tuong nao")

)

(IF (/= NIL SS) (PROGN

(setq Sl (SSLength SS))

(princ (strcat "\nTim thay: <" (itoa sl) "> doi tuong la BLOCK co ten: <" STNAME ">"))

)

)

(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ác anh oi. em dựng 3d trên cad 2004. vẽ 2d trên cad 2007.em nhờ các anh tạo cho em cái lisp cho cad 2004 với các tính năng như :lệnh layiso. layon, layoff, và hiệu chỉnh được nhiều đối tượng như cad 2007 vd:khi trim ta chọn giới hạn rồi trim được nhiều đối tượng 1 lúc như cad 2007 chỉ cần 1 lần chọn.thanks a lot.

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

Nguyễn Hoành ơi, bữa trước có nhờ bạn và mọi người xem có thể viết dùm mình Lips dùng chuột quét 1 biên dạng sẽ lấy được Xmax, Xmin, Ymax, Ymin cua biên dạng đó.

Mình đang làm một số Lips bên khuôn rất cần nó để phát triển và hoàn thiện. Mong bạn và mọi người giúp đỡ dùm. Thanks http://www.cadviet.com/upfiles/DE_CHAN.rar

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
Nguyễn Hoành ơi, bữa trước có nhờ bạn và mọi người xem có thể viết dùm mình Lips dùng chuột quét 1 biên dạng sẽ lấy được Xmax, Xmin, Ymax, Ymin cua biên dạng đó.

Mình đang làm một số Lips bên khuôn rất cần nó để phát triển và hoàn thiện. Mong bạn và mọi người giúp đỡ dùm. Thanks http://www.cadviet.com/upfiles/DE_CHAN.rar

Lệnh GBB (get bounding box) dưới đây sẽ giúp bạn tìm Xmax, Xmin, Ymax, Ymin của các đối tượng được chọn. Chương trình sẽ ghi ra màn hình text tọa độ và vẽ vào màn hình ACAD 2 điểm point tọa độ góc dưới trái và trên phải của hình vuông bao tập đối tượng.

(defun c:gbb ( / xmin xmax ymin ymax)
 (setq ss (ssget))
 (while (setq ent (ssname ss 0))
   (vla-getboundingbox (vlax-ename->vla-object ent) 'p1 'p2)
   (setq gmin (vlax-safearray->list p1)
  gmax (vlax-safearray->list p2)
  xmin (if xmin (min xmin (car gmin)) (car gmin))
  ymin (if ymin (min ymin (cadr gmin)) (cadr gmin))
  xmax (if xmax (max xmax (car gmax)) (car gmax))
  ymax (if ymax (max ymax (cadr gmax)) (cadr gmax))
  ss (ssdel  ent ss)
   )    
 )
 (entmake (list (cons 0 "POINT") (list 10 xmin ymin 0.0)))
 (entmake (list (cons 0 "POINT") (list 10 xmax ymax 0.0)))
 (princ "\nXmin: ")(princ xmin)
 (princ "\nYmin: ")(princ ymin)
 (princ "\nXmax: ")(princ xmax)
 (princ "\nYmax: ")(princ ymax)
 (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

Em nhờ BÁC NGUYỄN HOÀNH VIẾT DÙM EM TÍ NHE. THANK BÁC TRƯỚC. ĐÃ POST 1 LẦN MÀ KO AI QUAN TÂM CẢ.

Minh đang cần gấp file lisp nay lam.

Chuong trinh ve mat cat nhu sau:

Nhap vao file cao toa do diem hoac pick vao cac điểm trên màn hình.

Chọn tỷ lệ ngang và tỷ lệ đứng.

Chọn cao độ mặt so sánh (MSS).

 

Đây là file mẫu:

http://www.cadviet.com/upfiles/MAT_CAT_DOC_MAU_1.dwg

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
Chào bạn!

Mình muốn bạn giúp mình một lisp như sau:

- pic chọn một block sau đó quét chọn một vùng bản vẽ, đếm được số block có tên là block đã pic ban đầu.

(Mình là dân TK cơ điện, rất cần đếm các thiết bị điện trên bản vẽ mặt bằng, mà mình thì không thạo lisp)

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

mình có cách này giúp bạn đếm đc block mà ko phải dùng lisp .bạn đưa block về 1 layer riêng. dùng layiso tắt hết các layer khác, sau đó dùng lệnh xóa hết các block. dưới bảng command sẽ cho bạn biết là bạn xóa bao nhiu block và u lại là xong.

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ệnh GBB (get bounding box) dưới đây sẽ giúp bạn tìm Xmax, Xmin, Ymax, Ymin của các đối tượng được chọn. Chương trình sẽ ghi ra màn hình text tọa độ và vẽ vào màn hình ACAD 2 điểm point tọa độ góc dưới trái và trên phải của hình vuông bao tập đối tượng.

(defun c:gbb ( / xmin xmax ymin ymax)
 (setq ss (ssget))
 (while (setq ent (ssname ss 0))
   (vla-getboundingbox (vlax-ename->vla-object ent) 'p1 'p2)
   (setq gmin (vlax-safearray->list p1)
  gmax (vlax-safearray->list p2)
  xmin (if xmin (min xmin (car gmin)) (car gmin))
  ymin (if ymin (min ymin (cadr gmin)) (cadr gmin))
  xmax (if xmax (max xmax (car gmax)) (car gmax))
  ymax (if ymax (max ymax (cadr gmax)) (cadr gmax))
  ss (ssdel  ent ss)
   )    
 )
 (entmake (list (cons 0 "POINT") (list 10 xmin ymin 0.0)))
 (entmake (list (cons 0 "POINT") (list 10 xmax ymax 0.0)))
 (princ "\nXmin: ")(princ xmin)
 (princ "\nYmin: ")(princ ymin)
 (princ "\nXmax: ")(princ xmax)
 (princ "\nYmax: ")(princ ymax)
 (princ)
)

Cám ơn Nguyễn Hoành nhiều lắm! Lips này mình tìm lâu lắm rồi, nó rất có ích đối với mình. Thanks much!

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 anh oi. em dựng 3d trên cad 2004. vẽ 2d trên cad 2007.em nhờ các anh tạo cho em cái lisp cho cad 2004 với các tính năng như :lệnh layiso. layon, layoff, và hiệu chỉnh được nhiều đối tượng như cad 2007 vd:khi trim ta chọn giới hạn rồi trim được nhiều đối tượng 1 lúc như cad 2007 chỉ cần 1 lần chọn.thanks a lot.

bác Hoành giúp em với.hix,ko ai quan 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
bác Hoành giúp em với.hix,ko ai quan tâm

Mình cũng đã đọc yêu cầu của bạn, nhưng ngại trả lời vì những lẽ sau:

- layon, layoff thì ACAD2004 cũng có, không cần viết lại làm gì.

- Dùng lệnh Trim với nhiều đối tượng thì ở ACAD2004 bạn sử dụng tham số f là được. Còn nếu viết lisp cũng chỉ đến như vậy thôi, Lisp không thể can thiệp sâu về cái này được.

 

Người viết lisp chỉ hứng thú khi viết những lisp mà ACAD thông thường không làm được hoặc làm được nhưng không hiệu quả. Yêu cầu của bạn không rơi vào 2 trường hợp trên nên dễ đi vào quên lã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ác anh oi. em dựng 3d trên cad 2004. vẽ 2d trên cad 2007.em nhờ các anh tạo cho em cái lisp cho cad 2004 với các tính năng như :lệnh layiso. layon, layoff, và hiệu chỉnh được nhiều đối tượng như cad 2007 vd:khi trim ta chọn giới hạn rồi trim được nhiều đối tượng 1 lúc như cad 2007 chỉ cần 1 lần chọn.thanks a lot.

Tham khảo

http://www.cadviet.com/forum/index.php?sho...amp;#entry38142

 

Trim nhiều đối tượng : ExTrim

Extend nhiều đối tượng : ExExtend

Vừa Trim vừa Extend nhiều đối tượng : ExAdjust

 

Nhờ các bác cao thủ viet dum minh líp chay chuong trinh cat doc nay nhe.

Minh đang rất cần đó, cảm ơn các bác nhiều lắm

 

Đây là file mâu:

http://www.cadviet.com/upfiles/MAT_CAT_DOC_MAU_1.dwg

Bạn nên lưu ở các version thấp hơn vì nhiều người không có CAD version mới do:

- Cấu hình máy thấp nên không chạy nổi CAD version mới

- Dùng CAD có bản quyề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
Tham khảo

http://www.cadviet.com/forum/index.php?sho...amp;#entry38142

 

Trim nhiều đối tượng : ExTrim

Extend nhiều đối tượng : ExExtend

Vừa Trim vừa Extend nhiều đối tượng : ExAdjust

Bạn nên lưu ở các version thấp hơn vì nhiều người không có CAD version mới do:

- Cấu hình máy thấp nên không chạy nổi CAD version mới

- Dùng CAD có bản quyền

hix em gà wá . khi mới vào nghề em chỉ dùng cad 2007 sau này dựng 3d nặng wá máy chay ko nổi nên mới dùng 2004 nên ko bít.mong các cao thủ chỉ bảo cho.thanks so much.

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.

×