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ị

Bác nào co lisp thống kê cấu kiện không vây? thanks

Bạn muốn thống kê cấu kiện gì? không nên hỏi 1 câu cộc lốc như 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
tôi có một yêu cầu nhỏ này mong mọi người giúp:Tôi có một vùng được khoanh bằng poly,tôi muốn tạo ra một mạng lưới tam giác khép kín gồm các tam giác nhỏ vẽ bằng poly,các cạnh tam giác chẳn do mình đặt chiều dài,còn các cạnh tam giác lẻ(tam giác nằm ở viền) tuỳ biến.kết quả giống file tôi gời http://www.cadviet.com/upfiles/2/drawing1_25.dwg

Chưa tìm được quy luật bố trí các tam giác, bạn hãy nói cụ thể xem thế nào.

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 tất cả các bác trên diễn đàn.

Xin được cảm ơn các bác đã giúp đỡ em rất nhiều trong thời gian qua.

Đây là một diễn đàn thật sự rất bổ ích.

Em có một câu hỏi mong được diễn đàn giúp đỡ.

Em giả sử trong một dự án nào đó, chúng ta có rất nhiều bản vẽ CAD. Trong số đó có các bản vẽ lắp, bản vẽ chi tiết, bản vẽ thống kê số lượng chi tiết (cái này có thể là file CAD hoặc file Excel),...

Em không biết được liệu CAD có thể có chức năng link các dữ kiện ở các bản vẽ này với nhau có được không? Nếu dùng Lisp thì liệu có thêm chức năng này được không?

Ở đây, em đã upload lên diễn đàn một ví dụ nho nhỏ cụ thể. Ví dụ của em là có một bản vẽ lắp BV01, hai bản vẽ chi tiết (mỗi bản vẽ có hai chi tiết với số lượng khác nhau) BV02 và BV03, cùng một bản vẽ thống kê số lượng chi tiết Parlist như sau:

http://myfreefilehosting.com/f/e157ee70b7_0.78MB

Những bản vẽ này đều liên quan với nhau về số lượng, vật liệu, kích thước,... Nếu giả sử em thay đổi một trong các thông số như vật liệu hay kích thước ở một trong các bản vẽ BV02 hay BV03 thì làm cách nào để bản vẽ BV01 và bản vẽ Parlist kia cũng cập nhật được sự thay đổi ấy.

Mong các bác tìm hiểu giúp em.

Xin cảm ơn các bác 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ạn muốn thống kê cấu kiện gì? không nên hỏi 1 câu cộc lốc như thế.

 

Xin lỗi nhé, tôi muốn thống kê cấu kiện dầm, cột trong bản vẽ kết cấ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
Xin lỗi nhé, tôi muốn thống kê cấu kiện dầm, cột trong bản vẽ kết cấu

Chào bạn vtd_xd,

Bạn nên post một bản vẽ cần thống kê lên và một cái bảng mẫu kết quả thống kê mà bạn cần. Khi đó mọi người sẽ dễ giúp bạn hơn vì không phải ai cũng hiểu được đúng cái bạn yêu cầu do không phải cùng ngành nghề chuyên môn với bạn.

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
Xin lỗi nhé, tôi muốn thống kê cấu kiện dầm, cột trong bản vẽ kết cấu

Tôi cũng là dân XD nhưng tôi thấy tư duy và cách đặt vấn đề của bạn có quá nhiều hạn chế.

Cái gì cũng có thể thống kê được miễn sao nó có mặt trong bản vẽ và phải được quy định thống nhất, cũng như mỗi con người khi sinh ra phải có Tên, giới tính, ngày tháng năm sinh...

Thâ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
quy luật mà mình muốn xếp tam giác đấy là:- khi mình chọn vùng bao lớn bên ngoài thì lisp sẽ tạo ra các tam giác đều với các cạnh có chiều dài mình cho,vị trí đặt tam giác đầu tiên mình bấm trên màng hình cứ thế là vẽ,các tam giác ở vùng ven vì là không đều và có hình dạng bất kỳ thì lisp sẽ tự vẽ để làm sao các tam giác tạo ra kín cái vùng bao ở ngoài là được

Quả thật rất khó hình dung, bạn có thể mô tả chi tiết quá trình tạo ra cái hình trên được không. Về cơ bản thì cái gì có quy luật thì ta cũng có thể tự động hóa đượ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 bạn vtd_xd,

Bạn nên post một bản vẽ cần thống kê lên và một cái bảng mẫu kết quả thống kê mà bạn cần. Khi đó mọi người sẽ dễ giúp bạn hơn vì không phải ai cũng hiểu được đúng cái bạn yêu cầu do không phải cùng ngành nghề chuyên môn với bạn.

Chúc bạn vui.

 

Đơn giản thôi, tôi muốn có lisp đếm được số text trùng nhau trong một bản vẽ, ví du:

Text 1: là Dầm D1

Text 2: là Cột C1

Khi dùng lisp quét toàn bộ bản vẽ thì thống kê toàn bộ text này, và khi copy text 1, text 2 (trong 1 bản vẽ) thì thống kê cũng thay đổi theo

thanks

 

 

Đây là bản vẽ: http://www.cadviet.com/upfiles/2/bve.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
Đơn giản thôi, tôi muốn có lisp đếm được số text trùng nhau trong một bản vẽ, ví du:

Text 1: là Dầm D1

Text 2: là Cột C1

Khi dùng lisp quét toàn bộ bản vẽ thì thống kê toàn bộ text này, và khi copy text 1, text 2 (trong 1 bản vẽ) thì thống kê cũng thay đổi theo

thanks

Đây là bản vẽ: http://www.cadviet.com/upfiles/2/bve.rar

Bạn có thể sử dụng chức năng Replace sẵn có của Cad để đếm. Đếm xong Undo lại là OK. Nếu cần dùng Lisp thì tham khảo bài đếm các vòng tròn có cùng đường kính.

http://www.cadviet.com/forum/index.php?s=&...ost&p=91119

Còn việc tự động cập nhật mỗi khi thêm bớt thì không thể làm được.

  • 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ể sử dụng chức năng Replace sẵn có của Cad để đếm. Đếm xong Undo lại là OK. Nếu cần dùng Lisp thì tham khảo bài đếm các vòng tròn có cùng đường kính.

http://www.cadviet.com/forum/index.php?s=&...ost&p=91119

Còn việc tự động cập nhật mỗi khi thêm bớt thì không thể làm được.

 

Nếu dùng lệnh sẵn có thì tôi dùng lênh Fillter, tôi muốn các bạn viết giúp lisp tự động thống kê, thêm hoặc bớt cấu kiện thì thống kê tự update

Thanks

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
Đơn giản thôi, tôi muốn có lisp đếm được số text trùng nhau trong một bản vẽ, ví du:

Text 1: là Dầm D1

Text 2: là Cột C1

Khi dùng lisp quét toàn bộ bản vẽ thì thống kê toàn bộ text này, và khi copy text 1, text 2 (trong 1 bản vẽ) thì thống kê cũng thay đổi theo

thanks

Đây là bản vẽ: http://www.cadviet.com/upfiles/2/bve.rar

Chào bạn vtd_xd,

Việc thống kê các text này không khó nếu trên bản vẽ chỉ có rặt một loại text như vậy, nhưng trên thực tế, theo mình biết thì trên bản vẽ còn rất nhiều loại text khác nữa và chắc là bạn chả muốn thống kê chúng. Vậy bạn có thể cho biết các text cần thống kê của bạn có đặc tính gì khác với các text mà bạn không muốn thống kê???

Việc liên kết bảng thống kê với các dữ liệu trên bản vẽ, quả thật mình chưa biết cách nên không thể giúp bạn được, mà chỉ có thể làm một cái lisp để bạn chạy mỗi lần cần thống kê mà thôi.

Điều này có nghĩa mỗi khi bạn thay đổi số lượng các text đó trên bản vẽ, bạn sẽ phải chạy lại lisp một lần bạn ạ. Nếu bạn nhất trí mình có thể giúp bạn viết ra cái lisp đó.

Chúc bạn vui.

  • 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 bạn vtd_xd,

Việc thống kê các text này không khó nếu trên bản vẽ chỉ có rặt một loại text như vậy, nhưng trên thực tế, theo mình biết thì trên bản vẽ còn rất nhiều loại text khác nữa và chắc là bạn chả muốn thống kê chúng. Vậy bạn có thể cho biết các text cần thống kê của bạn có đặc tính gì khác với các text mà bạn không muốn thống kê???

Việc liên kết bảng thống kê với các dữ liệu trên bản vẽ, quả thật mình chưa biết cách nên không thể giúp bạn được, mà chỉ có thể làm một cái lisp để bạn chạy mỗi lần cần thống kê mà thôi.

Điều này có nghĩa mỗi khi bạn thay đổi số lượng các text đó trên bản vẽ, bạn sẽ phải chạy lại lisp một lần bạn ạ. Nếu bạn nhất trí mình có thể giúp bạn viết ra cái lisp đó.

Chúc bạn vui.

 

Như vậy cũng là tốt lắm rồi, bạn cố gắng giúp tôi nhé, text trên bản vẽ tôi chỉ dùng Dtext thôi, Nếu dùng attribute chắc sẽ gán nhiều thuộc tính hơn với chúc năng "Insert field"

- Text tôi muốn thống kê là một vùng trong bản vẽ

Cám ơn bạn trước 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
tôi có một yêu cầu nhỏ này mong mọi người giúp:Tôi có một vùng được khoanh bằng poly,tôi muốn tạo ra một mạng lưới tam giác khép kín gồm các tam giác nhỏ vẽ bằng poly,các cạnh tam giác chẳn do mình đặt chiều dài,còn các cạnh tam giác lẻ(tam giác nằm ở viền) tuỳ biến.kết quả giống file tôi gời http://www.cadviet.com/upfiles/2/drawing1_25.dwg

Chào "thonghoang1", đề bài bạn đặt ra tôi thấy rất hay, bạn hãy chờ 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

cảm ơn bạn đã quan tâm.các tam giác chẵn(đều, hoặc cân) tuỳ bạn sắp xếp sao cho bạn viết lisp thuận tiện là đượ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
Như vậy cũng là tốt lắm rồi, bạn cố gắng giúp tôi nhé, text trên bản vẽ tôi chỉ dùng Dtext thôi, Nếu dùng attribute chắc sẽ gán nhiều thuộc tính hơn với chúc năng "Insert field"

- Text tôi muốn thống kê là một vùng trong bản vẽ

Cám ơn bạn trước nhé

Chào bạn vtd_xd,

Đây là cái lisp để bạn dùng thử. Mình viết lại dựa theo cái lisp của bác Tue_NV viết để thống kê vòng tròn. Nếu có gì chưa phù hợp bạn hãy post lên.

(defun c:tkck (/ ltxt ltst)
(command "undo" "be")
(setq ss (ssget (list (cons 0 "TEXT") (cons 8 "_text") (cons 7 "TKCK")))
ltxt (list)
ltst (list)
i -1)
(while (setq ent (ssname ss (setq i (1+ i))))
(setq ltxt (append ltxt (list(cdr (assoc 1 (entget ent)))))))
(foreach x ltxt
(if (setq old (cdr (assoc x ltst)))
(setq ltst (subst (cons x (1+ old) ) (assoc x ltst) ltst))
(setq ltst (append ltst (list (cons x 1))))))
(setq k 1
p (getpoint "\n Chon diem dat bang")
h (getreal "\n Nhap chieu cao text: ")
d (getreal "\n Nhap do rong cot: "))
(entmake (list (cons 0 "TEXT") (cons 10 p) (cons 40 h) (cons 1 "THONG KE CAU KIEN")))
(entmake (list (cons 0 "TEXT") (cons 10 (list (car p) (- (cadr p) (* 2 h))))
(cons 40 h) (cons 1 "STT")))
(entmake (list (cons 0 "TEXT") (cons 10 (list (+ (car p) d) (- (cadr p) (* 2 h))))
(cons 40 h) (cons 1 "TEN CAU KIEN")))
(entmake (list (cons 0 "TEXT") (cons 10 (list (+ (car p) (* 2 d)) (- (cadr p) (* 2 h))))
(cons 40 h) (cons 1 "SO LUONG")))
(entmake (list (cons 0 "TEXT") (cons 10 (list (+ (car p) (* 3 d)) (- (cadr p) (* 2 h))))
(cons 40 h) (cons 1 "GHI CHU")))
(foreach x1 ltst
(entmake (list (cons 0 "TEXT") (cons 10 (list (car p) (- (cadr p) (* 2 h (+ 1 k)))))
(cons 40 h) (cons 1 (rtos k 2 0))))
(entmake (list (cons 0 "TEXT") (cons 10 (list (+ (car p) d) (- (cadr p) (* 2 h (+ 1 k)))))
(cons 40 h) (cons 1 (car x1))))
(entmake (list (cons 0 "TEXT") (cons 10 (list (+ (car p) (* 2 d)) (- (cadr p) (* 2 h (+ 1 k)))))
(cons 40 h) (cons 1 (rtos (cdr x1) 2 0))))
(entmake (list (cons 0 "TEXT") (cons 10 (list (+ (car p) (* 3 d)) (- (cadr p) (* 2 h (1+  k)))))
(cons 40 h) (cons 1 "" )))
(setq k (1+ k)))
(command "undo" "e")
(princ)
)

 

Trong lisp này mình căn cứ vào bản vẽ bạn post và giả định là các text cần đếm của bạn nằm trên lớp "_text" và có style là "TKCK". Với các bản vẽ mà text cần phân loại không có các thuộc tính như trên thì bạn có thể đổi lại mã trong dòng code này cho phù hợp:

(ssget (list (cons 0 "TEXT") (cons 8 "_text") (cons 7 "TKCK")))

Chúc bạn vui.

  • 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 bạn vtd_xd,

Đây là cái lisp để bạn dùng thử. Mình viết lại dựa theo cái lisp của bác Tue_NV viết để thống kê vòng tròn. Nếu có gì chưa phù hợp bạn hãy post lên.

(defun c:tkck (/ ltxt ltst)
(command "undo" "be")
(setq ss (ssget (list (cons 0 "TEXT") (cons 8 "_text") (cons 7 "TKCK")))
ltxt (list)
ltst (list)
i -1)
(while (setq ent (ssname ss (setq i (1+ i))))
(setq ltxt (append ltxt (list(cdr (assoc 1 (entget ent)))))))
(foreach x ltxt
(if (setq old (cdr (assoc x ltst)))
(setq ltst (subst (cons x (1+ old) ) (assoc x ltst) ltst))
(setq ltst (append ltst (list (cons x 1))))))
(setq k 1
p (getpoint "\n Chon diem dat bang")
h (getreal "\n Nhap chieu cao text: ")
d (getreal "\n Nhap do rong cot: "))
(entmake (list (cons 0 "TEXT") (cons 10 p) (cons 40 h) (cons 1 "THONG KE CAU KIEN")))
(entmake (list (cons 0 "TEXT") (cons 10 (list (car p) (- (cadr p) (* 2 h))))
(cons 40 h) (cons 1 "STT")))
(entmake (list (cons 0 "TEXT") (cons 10 (list (+ (car p) d) (- (cadr p) (* 2 h))))
(cons 40 h) (cons 1 "TEN CAU KIEN")))
(entmake (list (cons 0 "TEXT") (cons 10 (list (+ (car p) (* 2 d)) (- (cadr p) (* 2 h))))
(cons 40 h) (cons 1 "SO LUONG")))
(entmake (list (cons 0 "TEXT") (cons 10 (list (+ (car p) (* 3 d)) (- (cadr p) (* 2 h))))
(cons 40 h) (cons 1 "GHI CHU")))
(foreach x1 ltst
(entmake (list (cons 0 "TEXT") (cons 10 (list (car p) (- (cadr p) (* 2 h (+ 1 k)))))
(cons 40 h) (cons 1 (rtos k 2 0))))
(entmake (list (cons 0 "TEXT") (cons 10 (list (+ (car p) d) (- (cadr p) (* 2 h (+ 1 k)))))
(cons 40 h) (cons 1 (car x1))))
(entmake (list (cons 0 "TEXT") (cons 10 (list (+ (car p) (* 2 d)) (- (cadr p) (* 2 h (+ 1 k)))))
(cons 40 h) (cons 1 (rtos (cdr x1) 2 0))))
(entmake (list (cons 0 "TEXT") (cons 10 (list (+ (car p) (* 3 d)) (- (cadr p) (* 2 h (1+  k)))))
(cons 40 h) (cons 1 "" )))
(setq k (1+ k)))
(command "undo" "e")
(princ)
)

 

Trong lisp này mình căn cứ vào bản vẽ bạn post và giả định là các text cần đếm của bạn nằm trên lớp "_text" và có style là "TKCK". Với các bản vẽ mà text cần phân loại không có các thuộc tính như trên thì bạn có thể đổi lại mã trong dòng code này cho phù hợp:

(ssget (list (cons 0 "TEXT") (cons 8 "_text") (cons 7 "TKCK")))

Chúc bạn vui.

 

Cám ơn bạn nhé, nếu có các đường line kẻ thành bảng thì tốt qua, thanks

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 đang tìm cách truy xuất dữ liệu của đối tượng trong một block. Giả sử trong block có một hình chữ nhật nằm trong layer "1", một hình chữ nhật khác nằm trong layer "2". Thông qua lisp, làm thế nào biết được tọa độ của hai hình chữ nhật đó trong bản vẽ.

Bạn nào biết vấn đề này xin hướng dẫn, 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

Trong Express tools của AutoCAD có CHSPACE.LSP.

Lisp này (lệnh CHSPACE) dùng để MOVE khung tên và những gì User chọn trong Paper Space sang Model Space với tỷ lệ do User muốn.

Nhờ các Bác viết giúp Lisp với mục đích ngược với CHSPACE.LSP:

+ Đánh tên lệnh trong model, select block khung tên

+ Lisp sẽ move block khung tên trong model space sang Paper space với tỷ lệ của User chọn.

+ Tự động tạo 1 viewport bên trong khung tên.

PP up 2 bản vẽ để test.

Cám ơn nhiều

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

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

xin chào các bác pro!

Em có một yêu cầu nhỏ mong các bác giúp đỡ là các bác có thể viết giúp em một lisp có thể sửa hàng loạt các mtext để cho các mtext có cùng một nội dung như khi mình chỉnh text được không?!Ví dụ: khi mình bôi chọn 10 đối tượng text thì khi mở bảng properties ở dòng content mình nhập nội dung thì cả 10 text đều thay đổi với cùng một nội dung nhưng với mtext thì mình lại phải thay đổi đánh lại 10 lần như vậy thật bất tiện so với text. Rất mong các bác giúp đỡ! Xin cảm ơn các bác 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
xin chào các bác pro!

Em có một yêu cầu nhỏ mong các bác giúp đỡ là các bác có thể viết giúp em một lisp có thể sửa hàng loạt các mtext để cho các mtext có cùng một nội dung như khi mình chỉnh text được không?!Ví dụ: khi mình bôi chọn 10 đối tượng text thì khi mở bảng properties ở dòng content mình nhập nội dung thì cả 10 text đều thay đổi với cùng một nội dung nhưng với mtext thì mình lại phải thay đổi đánh lại 10 lần như vậy thật bất tiện so với text. Rất mong các bác giúp đỡ! Xin cảm ơn các bác nhiều

Đây là Lisp code

(defun c:ChangeAllText()
 (setq DCL_ID (load_dialog "ChangeAllText.DCL"))
 (new_dialog "InputBox" DCL_ID)
 (action_tile "txt" "(setq Txt $value)")
 (setq Answ (start_dialog))
 (if (= Answ 1)
(progn
  (setq ss (ssget '((-4 . "")))
	I -1)
  (while (setq Ent (ssname ss (setq I (1+ I))))
(setq Ent (entget ent)
	  Ent (subst (cons 1 txt) (assoc 1 ent) ent))
(entmod ent)
  )
)
 )
)

Lưu DCL code sau đây thành 1 file có tên "ChangeAllText.DCL" và đặt file vào đường dẫn hôc trợ của Cad. Sở dĩ tôi dùng Dialog để thuận tiện cho việc nhập chuỗi vì việc nhập chuỗi trên dòng lệnh không được thuận tiện lắm.

InputBox: dialog{
label = "Nhâòp giaì triò";
initial_focus = "txt";
:text {label="HaÞy nhâòp giaì triò câÌn thay ðôÒi:";}
:edit_box { fixed_width = true;
key = "txt";  edit_width = 30; allow_accept=true;}
ok_cancel;}

  • 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 các bác...

 

em có yêu cầu nho nhỏ mong các bác giúp đỡ. Cái này có vẻ đơn giản, nhưng trong công việc của em lại mất khá nhiều thời gian để thực hiện. Cụ thể như thế này ạ : Trong thiết kế chiếu sáng, đèn cho 1 phòng sẽ đc đặt như sau, khoảng cách từ đèn đến tường bằng 1/2 khoảng cách giữa các đèn. Diện tích phòng được xác định 2 góc chéo hcn, số hàng, số cột của đèn đã xác định được rồi. Vậy các bác có thể giúp em tạo 1 lisp giống như lệnh array, nhưng thay cái offset distance and direction bằng chọn diện tích phòng đó, rồi tự tính toán để đặt các block theo hàng và cột nhập vào.

Các bác xem thêm file gửi kèm giúp em nhé

Many thanks.

http://www.cadviet.com/upfiles/2/array_doi..._theo_phong.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 các bác...

 

em có yêu cầu nho nhỏ mong các bác giúp đỡ. Cái này có vẻ đơn giản, nhưng trong công việc của em lại mất khá nhiều thời gian để thực hiện. Cụ thể như thế này ạ : Trong thiết kế chiếu sáng, đèn cho 1 phòng sẽ đc đặt như sau, khoảng cách từ đèn đến tường bằng 1/2 khoảng cách giữa các đèn. Diện tích phòng được xác định 2 góc chéo hcn, số hàng, số cột của đèn đã xác định được rồi. Vậy các bác có thể giúp em tạo 1 lisp giống như lệnh array, nhưng thay cái offset distance and direction bằng chọn diện tích phòng đó, rồi tự tính toán để đặt các block theo hàng và cột nhập vào.

Các bác xem thêm file gửi kèm giúp em nhé

Many thanks.

http://www.cadviet.com/upfiles/2/array_doi..._theo_phong.dwg

Bạn dùng thử xem:

(defun C:BTD( / p1 p2 e m n w h x y p0 d) ;;;Bo Tri Den
(prompt "\nChon 2 diem xac dinh can phong...")
(setq
 p1 (getpoint "\nDiem goc duoi ben trai:")
 p2 (getcorner p1 "\nDiem goc tren ben phai:")
 e (car (entsel "\nChon block:"))
 m (getint "\nSo hang:")
 n (getint "\nSo cot:")
 w (- (car p2) (car p1))
 h (- (cadr p2) (cadr p1))
 x (/ w n)
 y (/ h m)
 p0 (list (+ (car p1) (/ x 2)) (+ (cadr p1) (/ y 2)))
 p0 (trans p0 1 0)
 d (entget e)
 d (subst (cons 10 p0) (assoc 10 d) d)
)
(entmod d)
(command "array" e "" "r" m n y x)
(princ)
)

Bạn insert trước cái block đèn ở vị trí bất kỳ (để có cái mà select), nhập lệnh BTD và đáp ứng các yêu cầu...

  • 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 các bác...

 

em có yêu cầu nho nhỏ mong các bác giúp đỡ. Cái này có vẻ đơn giản, nhưng trong công việc của em lại mất khá nhiều thời gian để thực hiện. Cụ thể như thế này ạ : Trong thiết kế chiếu sáng, đèn cho 1 phòng sẽ đc đặt như sau, khoảng cách từ đèn đến tường bằng 1/2 khoảng cách giữa các đèn. Diện tích phòng được xác định 2 góc chéo hcn, số hàng, số cột của đèn đã xác định được rồi. Vậy các bác có thể giúp em tạo 1 lisp giống như lệnh array, nhưng thay cái offset distance and direction bằng chọn diện tích phòng đó, rồi tự tính toán để đặt các block theo hàng và cột nhập vào.

Các bác xem thêm file gửi kèm giúp em nhé

Many thanks.

http://www.cadviet.com/upfiles/2/array_doi..._theo_phong.dwg

Chưa cần sử dụng đến Lisp. Hãy cho mình toạ độ của 1 block hình tròn ở 1 góc bất kì của hình chữ nhật và khoảng cách theo phương X và phương Y của 2 cọc gần nhất. Hoặc là cho toạ độ của 1 block hình tròn ở 1 góc bất kì của hình chữ nhật và các giá trị a, b, m, n

 

Chỉ bằng lệnh Copym nằm trong phụ trợ Express CAD sẽ giải quyết trọn vấn đề 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
Khách
Chủ đề này bây giờ đã bị đóng lại để trả lời thêm.

×