Đến nội dung


Hình ảnh
* * * - - 8 Bình chọn

Viết lisp theo yêu cầu [phần 2]


  • Chủ đề bị khóa Chủ đề bị khóa
3783 replies to this topic

#1001 hoa35ktxd

hoa35ktxd

    biết lệnh move

  • Members
  • PipPipPip
  • 125 Bài viết
Điểm đánh giá: 38 (tàm tạm)

Đã gửi 31 March 2010 - 12:08 PM

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ế.
  • 0

#1002 hoa35ktxd

hoa35ktxd

    biết lệnh move

  • Members
  • PipPipPip
  • 125 Bài viết
Điểm đánh giá: 38 (tàm tạm)

Đã gửi 31 March 2010 - 12:13 PM

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.c...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.
  • 0

#1003 thonghoang1

thonghoang1

    biết vẽ polygon

  • Members
  • PipPip
  • 71 Bài viết
Điểm đánh giá: 9 (bình thường)

Đã gửi 31 March 2010 - 02:38 PM

s
  • 0

#1004 connaivang

connaivang

    biết vẽ arc

  • Members
  • PipPip
  • 42 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 31 March 2010 - 03:37 PM

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://myfreefilehos...57ee70b7_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.
  • 0

#1005 vtd_xd

vtd_xd

    biết vẽ circle

  • Members
  • PipPip
  • 38 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 31 March 2010 - 04:05 PM

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
  • 0
Chuc vui ve

#1006 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 31 March 2010 - 04:39 PM

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.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1007 hoa35ktxd

hoa35ktxd

    biết lệnh move

  • Members
  • PipPipPip
  • 125 Bài viết
Điểm đánh giá: 38 (tàm tạm)

Đã gửi 31 March 2010 - 04:56 PM

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.
  • 0

#1008 hoa35ktxd

hoa35ktxd

    biết lệnh move

  • Members
  • PipPipPip
  • 125 Bài viết
Điểm đánh giá: 38 (tàm tạm)

Đã gửi 31 March 2010 - 04:58 PM

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.
  • 0

#1009 vtd_xd

vtd_xd

    biết vẽ circle

  • Members
  • PipPip
  • 38 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 31 March 2010 - 05:35 PM

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.c...files/2/bve.rar
  • 0
Chuc vui ve

#1010 hoa35ktxd

hoa35ktxd

    biết lệnh move

  • Members
  • PipPipPip
  • 125 Bài viết
Điểm đánh giá: 38 (tàm tạm)

Đã gửi 31 March 2010 - 06:30 PM

Đơ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.c...files/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.c...&...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.
  • 1

#1011 vtd_xd

vtd_xd

    biết vẽ circle

  • Members
  • PipPip
  • 38 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 31 March 2010 - 09:05 PM

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.c...&...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
  • 0
Chuc vui ve

#1012 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 01 April 2010 - 04:00 PM

Đơ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.c...files/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.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1013 vtd_xd

vtd_xd

    biết vẽ circle

  • Members
  • PipPip
  • 38 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 01 April 2010 - 09:17 PM

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é
  • 0
Chuc vui ve

#1014 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 02 April 2010 - 08:50 AM

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.c...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é.
  • 0

#1015 thonghoang1

thonghoang1

    biết vẽ polygon

  • Members
  • PipPip
  • 71 Bài viết
Điểm đánh giá: 9 (bình thường)

Đã gửi 02 April 2010 - 09:16 AM

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.
  • 0

#1016 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 03 April 2010 - 02:25 PM

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.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1017 vtd_xd

vtd_xd

    biết vẽ circle

  • Members
  • PipPip
  • 38 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 03 April 2010 - 10:09 PM

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
  • 0
Chuc vui ve

#1018 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 401 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 04 April 2010 - 12:45 AM

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.
  • 0

#1019 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 175 (tàm tạm)

Đã gửi 04 April 2010 - 06:02 PM

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.c...el_2_layout.zip
http://www.cadviet.c...s/2/chspace.lsp
  • 0

#1020 coldmountain4891

coldmountain4891

    biết vẽ line

  • Members
  • PipPip
  • 21 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 04 April 2010 - 08:21 PM

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
  • 0