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ị

Oài, cái này phức tạp ghê, bác ghép cho em vào cái lisp lb2 đi, em nhìn vào mù tịt chả biết gì, hihi

Chào bạn Sucuph,

Cái lisp mình gửi là đã ghép rồi đấy mà. Bạn cứ việc xài thử thôi. Lệnh vẫn giữ nguyên là lb2 thô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
Đây là phần tiếp theo của topic Viết lisp theo yêu cầu, mời các bạn tiếp tục thảo luận.

Chào các bác ! ,các bác có thể viết cho em 1 cái lisp để edit như thế này ko a ? e có 1 bản vẽ cốt thép bị lỗi như sau : 1 loại thép số hiệu 10 phi 32a200 , nhưng cũng với thép số hiệu là 10 nhưng có chỗ là phi20a200 hoặc phi 32a150 . Bây giờ e muốn sửa tất cả thép số hiệu 10 là phi32a200 , mong bác cứu e với !

Chỉnh sửa theo huyhoa255

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 Sucuph,

Cái lisp mình gửi là đã ghép rồi đấy mà. Bạn cứ việc xài thử thôi. Lệnh vẫn giữ nguyên là lb2 thôi mà.

em load lisp thì báo bị lỗi, bác kiểm tra lại rồi post lại lên hộ em nha! 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
Chào các bác ! ,các bác có thể viết cho em 1 cái lisp để edit như thế này ko a ? e có 1 bản vẽ cốt thép bị lỗi như sau : 1 loại thép số hiệu 10 phi 32a200 , nhưng cũng với thép số hiệu là 10 nhưng có chỗ là phi20a200 hoặc phi 32a150 . Bây giờ e muốn sửa tất cả thép số hiệu 10 là phi32a200 , mong bác cứu e với !

Cái này mình nghĩ dùng lệnh Find để Replace được 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
Cái này mình nghĩ dùng lệnh Find để Replace được mà!!

nhưng e chỉ muốn thay đổi chỉ với thép có số hiệu là 10 thôi , làm như thế nó sẽ đổi tất cả . Mong các bác 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

Bạn nên nói rõ hoặc gửi file lên vì không biết bạn chú thích thép như thế nào, giữa ký hiệu thép và chú thích thép có mối quan hệ gì với nhau. Nếu ký hiệu thép và chú thích thép là 1 đối tượng thì có thể giải quyết tự động được.

Cũng có thể làm thủ công bằng cách sử dụng lệnh Replace sau đó chọn các đối tượng cần thay thế.

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 nên nói rõ hoặc gửi file lên vì không biết bạn chú thích thép như thế nào, giữa ký hiệu thép và chú thích thép có mối quan hệ gì với nhau. Nếu ký hiệu thép và chú thích thép là 1 đối tượng thì có thể giải quyết tự động được.

Cũng có thể làm thủ công bằng cách sử dụng lệnh Replace sau đó chọn các đối tượng cần thay thế.

Cám ơn bạn đã chỉ dẫn giúp mình . Số hiệu thép , đường kính thép và khoảng cách là 3 đối tượng riêng biệt . Mình có dùng lệnh quick select thì mới chỉ tìm được vị trí chú thích loại thép có số hiệu là 10 , nhưng ko biết làm thế nào có thể edit nhanh đường kính và khoảng cách thép đó được . Đây là file của mình .

http://www.cadviet.com/upfiles/2/1_cau_ra_thap.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

Không download được file của bạn nhưng tôi có thể gợi ý thế này:

Tìm tất cả các đối tượng (Text, MText, khối có thuộc tính) thể hiện số hiệu thép (tùy theo đối tượng định nghĩa) có giá trị là 10, tìm điểm chèn của đối tượng đó, khoanh vùng giới hạn thể hiện đường kính và khoảng cách tương ứng, tìm các đối tượng thể hiện đường kính và khoảng cách nằm trong vùng xác định rồi tiến hành hiệu chỉnh.

Cụ tỉ thì không thể nói được vì bạn trình bày chưa cụ tỉ và cái file của bạn lại không download được.

Đã download được rồi nhưng hơi ngán.

Bạn bê cả hồ sơ Up lên đây, bắt mọi người nghiên cứu thì không nên, hãy trích 1 phần bản vẽ up lên để tiết kiệm thời gian và dung lượng lưu trữ cũng như chi phí Net.

Vấn đề bạn đạt ra hoàn toàn có thể giải quyết được như đã nói ở trên, vấn đề là thời gian.

Nói thêm với bạn: Không biết bản vẽ này do bạn vẽ hay copy về, nhưng thể hiện như thế sẽ rất khó quản lý.

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ông download được file của bạn nhưng tôi có thể gợi ý thế này:

Tìm tất cả các đối tượng (Text, MText, khối có thuộc tính) thể hiện số hiệu thép (tùy theo đối tượng định nghĩa) có giá trị là 10, tìm điểm chèn của đối tượng đó, khoanh vùng giới hạn thể hiện đường kính và khoảng cách tương ứng, tìm các đối tượng thể hiện đường kính và khoảng cách nằm trong vùng xác định rồi tiến hành hiệu chỉnh.

Cụ tỉ thì không thể nói được vì bạn trình bày chưa cụ tỉ và cái file của bạn lại không download được.

Thanks bạn đã giúp mình ! cách này mình cũng đã dùng nhưng như thế vẫn làm lâu quá bạn ạ , bạn có biết cái lisp nào thay thế giúp mình với . mình up lại cái file của mình .

http://www.cadviet.com/upfiles/2/1_cau_ra_thap_1.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ác bác ! ,các bác có thể viết cho em 1 cái lisp để edit như thế này ko a ? e có 1 bản vẽ cốt thép bị lỗi như sau : 1 loại thép số hiệu 10 phi 32a200 , nhưng cũng với thép số hiệu là 10 nhưng có chỗ là phi20a200 hoặc phi 32a150 . Bây giờ e muốn sửa tất cả thép số hiệu 10 là phi32a200 , mong bác cứu e với !

http://www.cadviet.com/upfiles/2/1_cau_ra_thap_1.rar

các bác góp cho e vài ý kiến với ! e tìm mỏi hết cả mắt rồi mà ko đượ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
em load lisp thì báo bị lỗi, bác kiểm tra lại rồi post lại lên hộ em nha! thanks bác!

Chào bạn Sucuph,

Mình đã kiểm tra và phát hiện ra cái lỗi ở dòng code này:

(setq Npt (getint"\n Chon so bat dau danh thu tu cac diem " so="" thu="" tu=""> : " ))

Đây có lẽ là lỗi của trang upload của diễn đàn. Thực chất cái dòng code này là:

(setq Npt (getint"\n Chon so bat dau danh thu tu cac diem : " ))

Vậy mà chả hiểu sao khi paste vào codebox nó lại ra như vậy. Bạn hãy kích vào nút reply bài viết trên của mình xem lại dòng code này sẽ rõ.

Bạn có thể mở file lisp đã download về và sửa lại bằng tay cái dòng code này cho dung như trên. Sau đó thử lại xem nhé.

Hoặc là bạn load lại file lisp này theo địa chỉ:

http://www.cadviet.com/upfiles/2/lb22.lsp

 

 

Chúc bạn vui.

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
http://www.cadviet.com/upfiles/2/1_cau_ra_thap_1.rar

các bác góp cho e vài ý kiến với ! e tìm mỏi hết cả mắt rồi mà ko được .

Chào bạn Huyhoa255,

File bạn upload chịu chết không mở được, bạn hãy upload lại file dưới dạng cad2004 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
Bạn "PhamthanhBinh" viết lisp này rất hay rùi. Thực chất đây có lẽ là bài cắm cọc GPMB hoặc cắm Mốc lộ giới của tuyến đường.

Việc chuyển số liệu sang file excel theo mình nghĩ đơn giảm hơn chỉ cần ghi ra file dang .CSV là ổn rồi, như thế mình sẽ không phải khai báo file excel trước. Xuất ngay sang Excel cũng tốt nhưng hơi phức tạp một chút.

Xin nhờ các bạn giúp bổ sung thêm bài toán một chút nũa cho bài toán được hoàn chỉnh:

- Cho điểm đầu của polyline một giá trị (Lý trình đầu) bằng cách hỏi lý trình ở dòng lệnh

- Xác định lý trình tương ứng của các cọc giải phóng mặt bằng và ghi bổ sung thêm một lý trình sau cột stt.

Ví dụ:

- Cho điểm đầu tiên của polyline giá trị 100

- Lý trình của cọc đầu tiên là 123.75 (=100+23.75)

File minh họa: http://www.cadviet.com/upfiles/2/vidu_3.dwg

Cảm ơn các bạn về bài toán!

Chào bạn Aliosa,

Xin lỗi vì chậm trả lời bạn.

Yêu cầu bạn đặt ra không phải quá khó nhưng nó khác với yêu cầu của bạn Ngolevietduc87. Bạn Ngolevietduc87 yêu cầu xuất cái tọa độ của điểm chèn block nằm ngoài pline, còn bạn là xuất tọa độ điểm nằm trên pline theo các lý trình đã định trước.

Do vậy bạn nên post một bản vẽ gốc và cái kết quả bạn muốn có lên , mình sẽ viết thử xem. Hiện tại việc xuất dữ liệu ra file *.txt, *.csv và *.xls mình cũng đã vỡ vạc được ít nhiều và có thể ứng dụng tàm tạm. Bạn tham khảo cái lisp mình viết cho bạn Sucuph sẽ rõ.

Chúc bạn vui.

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 mới bắt đầu dùng CAD nên còn nhiều bỡ ngỡ, mong các huynh đệ chỉ giáo.

Mình có các đường thẳng như sau:

3627ba9c.png

Với chỉ 1 lệnh, mình muốn chia các đoạn thẳng màu trắng thành 2 phần bởi đường màu xanh.

2.png

Nếu cad đã có lệnh thì xin hãy chỉ giúp, mình đã lục mọi help khá kỹ rồi mà không thấy. Nếu chưa có thì xin hãy viết lisp giúp mình.

Xin chân thành cảm ơn các huynh đệ

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 mới bắt đầu dùng CAD nên còn nhiều bỡ ngỡ, mong các huynh đệ chỉ giáo.

Mình có các đường thẳng như sau:

3627ba9c.png

Với chỉ 1 lệnh, mình muốn chia các đoạn thẳng màu trắng thành 2 phần bởi đường màu xanh.

2.png

Nếu cad đã có lệnh thì xin hãy chỉ giúp, mình đã lục mọi help khá kỹ rồi mà không thấy. Nếu chưa có thì xin hãy viết lisp giúp mình.

Xin chân thành cảm ơn các huynh đệ

bạn search trên diễn đàn với từ khóa BREAK sẽ tìm được lisp bạn muốn!

nếu ko bạn thử LISP này xem!LISP này mình cũng down trên diễn đàn đó!mà ko nhớ của bác nào nữa!sorry tác giả nhé!

LỆnh là br1 và br2

http://www.cadviet.com/upfiles/2/br.rar

  • 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
file của mình http://www.cadviet.com/upfiles/2/1_cau_ra_thap_2.rar

Phamthanhbinh giúp mình với nhé ! Thanks bạn.

Chào bạn Huyhoa255,

Bạn có thể cho biết cái loại thép số hiệu 10 trên bản vẽ của bạn được phân biệt với các loại thép khác như thế nào không. Mình tìm trên bản vẽ của bạn thì chịu chả thấy có bất cứ dấu hiệu gì cho biết các thanh thép thuộc loại thép số hiệu nào cả.

Như vậy việc chọn ra các text cần thay đổi quả thực khá nan giải bạn ạ.

Bạn hãy post bản vẽ thể hiện một vị trí cần sửa trước khi sửa và cái bạn muốn thể hiện sau khi sửa dưới dạng Cad2004 bạn nhé.

Chờ thông tin của 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
Mình mới bắt đầu dùng CAD nên còn nhiều bỡ ngỡ, mong các huynh đệ chỉ giáo.

Mình có các đường thẳng như sau:

3627ba9c.png

Với chỉ 1 lệnh, mình muốn chia các đoạn thẳng màu trắng thành 2 phần bởi đường màu xanh.

2.png

Nếu cad đã có lệnh thì xin hãy chỉ giúp, mình đã lục mọi help khá kỹ rồi mà không thấy. Nếu chưa có thì xin hãy viết lisp giúp mình.

Xin chân thành cảm ơn các huynh đệ

Mình sưu tập được lisp này ko nhớ tác giả nữa. Lệnh này cho phép bạn chia đoạn thẳng hay đuờng thẳng làm 2 phần ở bất kỳ điểm nào. Lệnh là BF nhé

 

http://www.cadviet.com/upfiles/2/bf_chat_ko_dut_mranhtk.rar

  • 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

Chào em svba.

Gửi em Lisp vẽ đường phân giác

(defun c:vpg(/ oldos prdiem ssa p ent prd prc pd pc eL dhuong hs
       diem listdiem listdp xmin xmax ymin ymax)
(vl-load-com)
(setq oldos (getvar "osmode"))
(setvar "osmode" 3)
 (setvar "cmdecho" 0)
(setvar "edgemode" 1)
(setq ssa (ssadd) i 0 listdiem (list) listdp (list))
(while (setq p (getpoint "\n Chon trung diem doan bo goc :") )
 (while (or (null (nentselp p))
	(not (wcmatch (cdr(assoc 0 (entget(car (nentselp p))))) "*LINE,ARC"))
  )
      (setq p (getpoint "\n Chon trung diem doan bo goc :")))
 (setq ent (car(nentselp p)))
 (setq prdiem (vlax-curve-getParamAtPoint ent p))
 (setq prd (- prdiem 0.5) prc (+ prdiem 0.5))
    (if (or (= prdiem 0) (= prdiem (vlax-curve-getEndParam ent)) )
(progn
   (setq prd 0.5)
   (setq prc (- (vlax-curve-getEndParam ent) 0.5))
) )
;;;;;;
 (setq pd (vlax-curve-getPointAtParam ent prd)
pc (vlax-curve-getPointAtParam ent prc)  )
   (setvar "osmode" 0)
 (command "Xline" "B" p pd pc "") (setq eL (entlast))
   	(setq dhuong (cdr(assoc 11 (entget (entlast)))))
   	(setq hs (distance pd pc))
(setq diem (list (+ (car p) (* (car dhuong) hs))
	     (+ (cadr p) (* (cadr dhuong) hs)) 0))	
(command "line" p diem "")
   	(setq ssa (ssadd (entlast) ssa))
   	(entdel eL)
   	(setq listdiem (append listdiem (list diem)))
(setq listdp (append listdp (list p)))
 	(setvar "osmode" 3)
 );while
(setq xmin (- (caar(vl-sort listdp '(lambda (x1 x2)
			(	    hs))
 (setq xmax (+ (caar(vl-sort listdp '(lambda (x1 x2)
			(> (car x1) (car x2))  ) ))
    hs))
 (setq ymin (- (cadar(vl-sort listdp '(lambda (x1 x2)
			(	    hs))
 (setq ymax (+ (cadar(vl-sort listdp '(lambda (x1 x2)
			(> (cadr x1) (cadr x2))  ) ))
    hs))
 (vla-zoomwindow (vlax-get-acad-object)
   			(vlax-3d-point (list xmin ymin 0))
   			(vlax-3d-point (list xmax ymax 0)) )
(command "extend" ssa "" "F")
(foreach x listdiem (command x))	   
 (command "" "")
 (setvar "osmode" oldos)
 (setvar "modemacro" "Chuc ban lam viec hieu qua - Tue_NV-0955193619")
 )

  • 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 search trên diễn đàn với từ khóa BREAK sẽ tìm được lisp bạn muốn!

nếu ko bạn thử LISP này xem!LISP này mình cũng down trên diễn đàn đó!mà ko nhớ của bác nào nữa!sorry tác giả nhé!

LỆnh là br1 và br2

http://www.cadviet.com/upfiles/2/br.rar

Xin chân thành cảm ơn bạn truongthanh lệnh br2 chính là thứ mình đang cần. Mình là dân cơ khí nên rất cần nó để chuyển phần bị che khuất sang nét đứt.

Tiện thể bạn cho mình hỏi cách xem nội dung lisp br.fas của bạn. Lisp *.lsp thì có thể xem bằng note còn *.fas thì xem bằng cách nào, mình cũng đang muốn học lisp? Thank 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
Xin chân thành cảm ơn bạn truongthanh lệnh br2 chính là thứ mình đang cần. Mình là dân cơ khí nên rất cần nó để chuyển phần bị che khuất sang nét đứt.

Tiện thể bạn cho mình hỏi cách xem nội dung lisp br.fas của bạn. Lisp *.lsp thì có thể xem bằng note còn *.fas thì xem bằng cách nào, mình cũng đang muốn học lisp? Thank bạn

Mình không thể xem được file *.fas vì nó được mã hoá.

Mình thấy có Topic Học AutoLisp dành cho người bắt đầu hay lắm, bạn có thể vô đó đọc

Học AutoLisp, Thật là đơn giả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

Nhờ các Bác viết cho 1 LISP dùng để ghép các bản vẽ đơn, có cùng 1 khổ giấy A3, được vẽ trong Model space thành MỘT bản vẽ chung, chứa đựng tất cả các b/v đơn đó.

Các bản vẽ đơn này đã được save trong 1 folder. Cách thực hiện sẽ như sau:

1. Open 1 bản vẽ trống.

2. Đánh tên lệnh.

3. Chọn folder chứa các b/v đơn.

4. Lisp sẽ tự động ghép thành 1 b/v chung (thứ tự như b/v dưới đây có tên Multiple Drawings)

Dùng Lisp Mplot của bác Nguyen Hoanh để in thì rất tiện lợi cho multiple drawings.

PP chỉ dùng lệnh COPYBASE để ghép theo kiểu thủ công từng b/v một. Nhưng vì có số lượng lớn b/v nên cần các Bác viết giúp 1 Lisp như trình bày trên.

Xin cám ơn nhiều

(PP tạo các b/v đơn và một b/v chung để các Bác test)

http://www.cadviet.com/upfiles/2/multiple_drawings.zip

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 viết cho 1 LISP dùng để ghép các bản vẽ đơn, có cùng 1 khổ giấy A3, được vẽ trong Model space thành MỘT bản vẽ chung, chứa đựng tất cả các b/v đơn đó.

Các bản vẽ đơn này đã được save trong 1 folder. Cách thực hiện sẽ như sau:

1. Open 1 bản vẽ trống.

2. Đánh tên lệnh.

3. Chọn folder chứa các b/v đơn.

4. Lisp sẽ tự động ghép thành 1 b/v chung (thứ tự như b/v dưới đây có tên Multiple Drawings)

Dùng Lisp Mplot của bác Nguyen Hoanh để in thì rất tiện lợi cho multiple drawings.

PP chỉ dùng lệnh COPYBASE để ghép theo kiểu thủ công từng b/v một. Nhưng vì có số lượng lớn b/v nên cần các Bác viết giúp 1 Lisp như trình bày trên.

Xin cám ơn nhiều

(PP tạo các b/v đơn và một b/v chung để các Bác test)

http://www.cadviet.com/upfiles/2/multiple_drawings.zip

Phiphi dùng lisp IMF (insert multi files) dưới đây

 

(defun c:imf()
 (setq pathname (vl-filename-directory (getfiled "Hay chon file dwg bat ky thuoc thu muc" "" "dwg" 0))
filelist (vl-sort (vl-directory-files pathname "*.dwg") '	p (getpoint "\nDiem chen: ")
xht (car p)
yht (cadr p)	
 )
 (setq oldos (getvar "osmode"))
 (setvar "osmode" 0)
 (foreach filename filelist    
   (command "-insert" (strcat pathname "/" filename) (list xht yht) 1.0 1.0 0.0)
   (vla-getboundingbox (vlax-ename->vla-object (entlast)) 'p1 'p2)    
   (setq
     p1 (vlax-safearray->list p1)
     p2 (vlax-safearray->list p2)      
     xht (+ xht (abs (car (mapcar '- p2 p1))))
     blname (cdr (assoc 2 (entget (entlast))))
   )
   (command ".explode" (entlast) "")    
   (command "-purge" "Block" blname "N")
 )
 (setvar "osmode" oldos)
 (princ)
)

  • 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
Xin chân thành cảm ơn bạn truongthanh lệnh br2 chính là thứ mình đang cần. Mình là dân cơ khí nên rất cần nó để chuyển phần bị che khuất sang nét đứt.

Tiện thể bạn cho mình hỏi cách xem nội dung lisp br.fas của bạn. Lisp *.lsp thì có thể xem bằng note còn *.fas thì xem bằng cách nào, mình cũng đang muốn học lisp? Thank bạn

Cắt các đối tượng : lines, lwplines, plines, splines, ellipse, circles & arcs tại các giao điểm.

Link : http://www.cadviet.com/forum/index.php?showtopic=10514

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

×