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ị

Nhờ các anh trên diễn đàn viết giùm em 1 lisp như sau:

Nội suy các đường đồng mức phụ từ các đường đồng mức chính

Đường đồng mức phụ là các pl giống đường đồng mức chính

Cao độ của đường đồng mức phụ là trung bình cộng của các đường đồng mức chính

Text ghi cao độ của đường đm phụ giống với text ghi cao độ của đường DM chính

File đính kèm: http://www.cadviet.com/upfiles/2/cadviet_3.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 MANHHUNGXDA

Gửi bạn Lisp có chức năng đánh số thứ tự các block thuộc tính ATTDEF theo yêu cầu. Link download

Nhớ chép file ATTI.dcl vào Support File Search Path.

 

EM cảm ơn anh gia_bach nhiều, kết quả thật bất ngờ

Nhưng mà không hiểu sao, em chọn cái đối tượng khác VIDU: dientich hoặc khối lượng ...thì lại báo lỗi như sau:

anhbach.jpg

anh chỉnh hộ em với!, Thực tế, em muốn chọn block ở dạng tổng quát, không chỉ chọn cố định là "SO", mà chọn loại tên Block thuộc tính bất kì, nó đều đánh số được anh à!

Cảm ơn 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
Tôi muốn khai triển hình côn và côn lệch ra mặt phẳng. Có ai giup tôi không vậy? Cố gắng giúp tôi một lisp nhé!

Có phải lisp Thiep đã viết như thế này không:

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

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,

Vừa rồi có tìm thấy 1 cái ứng dụng, của lệnh ATTI

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

http://www.cadviet.com/upfiles/2/control.rar (phải apload cả 2 file mới dùng được)

....

đây là file sau khi biên dịch, nhờ các bác sửa dùm để có lệnh ATTI như file gốc

Trân thành cảm ơn!

Chào MANHHUNGXDA, bạn dùng lisp này xem, nó chưa có hộp thoại như trong hình, nhưng vẫn chạy tốt!

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

  • 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
EM cảm ơn anh gia_bach nhiều, kết quả thật bất ngờ

Nhưng mà không hiểu sao, em chọn cái đối tượng khác VIDU: dientich hoặc khối lượng ...thì lại báo lỗi như sau:

anhbach.jpg

anh chỉnh hộ em với!, Thực tế, em muốn chọn block ở dạng tổng quát, không chỉ chọn cố định là "SO", mà chọn loại tên Block thuộc tính bất kì, nó đều đánh số được anh à!

Cảm ơn anh!

Đó không phải là lỗi, mà là thông báo đại khái là Code chưa hoàn thiện.

Do bạn chỉ yêu cầu phần đánh số thứ tự nên LISP chỉ chạy khi bạn Click chọn vào Tag = SO, với các Tag thuộc tính khác ("COSBQ" "COSTK" "DTICH" "KLUONG") LISP chưa đáp ứng đuơc.

Thực tế là tui cũng không biết cách tính các thuộc tính này như thế nào. Thuộc tính DTICH thì có thể hiểu đuợc, nhưng KLUONG, COSBQ, COSTK thì pó tay.

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 phải là lỗi, mà là thông báo đại khái là Code chưa hoàn thiện.

Do bạn chỉ yêu cầu phần đánh số thứ tự nên LISP chỉ chạy khi bạn Click chọn vào Tag = SO, với các Tag thuộc tính khác ("COSBQ" "COSTK" "DTICH" "KLUONG") LISP chưa đáp ứng đuơc.

Thực tế là tui cũng không biết cách tính các thuộc tính này như thế nào. Thuộc tính DTICH thì có thể hiểu đuợc, nhưng KLUONG, COSBQ, COSTK thì pó tay.

Đó chỉ là tên của block thuộc tính, tên củađôis tượng ATT thôi

Cái lisp cũ của em nó làm kiểu gì ấy anh 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ông ty mình đang thiết kế máy tự động, chỉ sử dụng cam tròn lệch tâm. Mình được giao nhiệm vụ thiết kế cam tròn lệnh tâm, công việc chỉ giản đơn là vẽ đường tròn biết chu vi, nghĩa là có chu vi lựa chọn trước.

Chẳng hạn vẽ cam tròn lệnh tâm biết chu vi của cam là 52mm. Để vẽ được đường tròn có chu vi 52 mình tính theo công thức R = chu vi /(2*3.14). Cách này lâu vì số lượng cam tròn lớn, hơn nữa độ chính xác khi tính R không cao.

Mình cần lisp tự động vẽ đường tròn hoặc cung tròn mà chỉ cần chọn vị trí tâm và chu vi đường tròn.

Mong được các anh, và các bạn giúp đỡ, cảm ơn nhiều! :cheers: :cheers: :cheers:

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ông ty mình đang thiết kế máy tự động, chỉ sử dụng cam tròn lệch tâm. Mình được giao nhiệm vụ thiết kế cam tròn lệnh tâm, công việc chỉ giản đơn là vẽ đường tròn biết chu vi, nghĩa là có chu vi lựa chọn trước.

Chẳng hạn vẽ cam tròn lệnh tâm biết chu vi của cam là 52mm. Để vẽ được đường tròn có chu vi 52 mình tính theo công thức R = chu vi /(2*3.14). Cách này lâu vì số lượng cam tròn lớn, hơn nữa độ chính xác khi tính R không cao.

Mình cần lisp tự động vẽ đường tròn hoặc cung tròn mà chỉ cần chọn vị trí tâm và chu vi đường tròn.

Mong được các anh, và các bạn giúp đỡ, cảm ơn nhiều! :cheers: :cheers: :cheers:

thử nhé

(defun c:vc ()

(setq tam (getpoint "\nNhap tam duong trong:")

cv (getreal "\nNhap chu vi duong tron:")

bk (/ cv (* 2 3.14))

)

(command "circle" tam bk )

(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
Chẳng hạn vẽ cam tròn lệnh tâm biết chu vi của cam là 52mm. Để vẽ được đường tròn có chu vi 52 mình tính theo công thức R = chu vi /(2*3.14). Cách này lâu vì số lượng cam tròn lớn, hơn nữa độ chính xác khi tính R không cao.

Chào bạn 'hoanghaiyp' với cách tính R = chu vi /(2*3.14) thì rõ ràng rằng trong cách tính của bạn sẽ có sai số. Và sai số sẽ càng lớn khi chu vi càng lớn bởi lẽ số eq.latex?\[\pi \] là một số vô tỷ.

để tránh sai số và như bạn nói về độ chính xác của R thì theo Tue_NV, bạn nên thay cách tính của bạn

-> trở thành R = chu vi /(2* eq.latex?\[\pi \])

 

LỊCH SỬ CỦA SỐ eq.latex?\[\pi \]

Số pi là gì?

PI eq.latex?\[\pi \] là mẫu tự thứ 16 trong bảng chữ cái Hi Lạp, nhưng chữ pi viết thường eq.latex?\[\pi \] lại là một hằng số quan trọng trong toán học. Đó là một số siêu việt, xấp xỉ bằng 3,14159, biểu diễn cho tỉ số giữa chu vi và đường kính của một đường tròn.

 

Một giá trị xấp xỉ của số eq.latex?\[\pi \] là 22/7. Khá nhiều giá trị xấp xỉ khác của eq.latex?\[\pi \] được dùng đến trong kinh thánh và suốt thời gian dài sau đó. Trong kinh thánh, giá trị này bằng 3. Sau đó, nhà toán học Hi Lạp Acsimét (Archimedes) xác nhận lại một cách chính xác là giá trị eq.latex?\[\pi \] nằm trong khoảng 3 10/70 và 3 11/70. Với sự trợ giúp của máy tính, người ta đã tính được số eq.latex?\[\pi \] với hơn 200 tỉ chữ số thập phân vào cuối năm 1999 (trong 40 giờ, với bộ nhớ trên 800GB). Tuy nhiên, các kết quả tính toán này không có ứng dụng trong thực tế, vì chỉ với 30 chữ số chính xác của eq.latex?\[\pi \] đã đủ cho người ta làm bất cứ công việc tính toán nào.

 

Tỉ số này là một số vô tỉ, nên số chữ số thập phân sẽ cứ kéo dài mãi. Kí hiệu eq.latex?\[\pi \] được sử dụng lần đầu vào năm 1706 bởi nhà toán học Anh William Jones, nhưng nó chỉ trở nên phổ biến sau khi nhà toán học Thụy Sĩ Ơ-le (Leonhard Euler) chấp nhận sử dụng năm 1737. Vào năm 1882, nhà toán học Đức Ferdinand Lindemann chứng minh được rằng eq.latex?\[\pi \] là một số siêu việt, nghĩa là nó không là nghiệm của bất cứ đa thức với hệ số hữu tỉ nào. Từ đó, ông chỉ ra rằng không thể giải bài toán viên phương và cầu phương (nghĩa là, dựng hình vuông có diện tích bằng hình tròn cho trước, hay dựng hình lập phương có thể tích bằng hình cầu cho trước, và ngược lại, bằng thước và compa).

 

* Năm 1609 Ludolph von Ceulen nhờ phương pháp của Archimède, đã tính được con số Pi với 34 số lẻ mà người ta đã khắc số này trên mộ bia của ông.

 

Cuối thế kỷ thứ 20 số Pi đã tính với độ chính xác tơi con số thứ 200 tỉ (200 000 000 000)

 

Ngày 11 tháng 9 năm 2000: con số lẻ thứ một triệu tỉ số không (1.000.000.000.000.000)

Cũng mạn phép bạn tivateo -> sửa lại code của bạn 1 tí nhé :

(defun c:vc (/ tam cv bk)
(setq tam (getpoint "\nNhap tam duong trong:")
cv (getreal "\nNhap chu vi duong tron:")
bk (/ cv (* 2 pi))
)
(command "circle" tam bk )
(princ)
)

  • Vote tăng 3

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 MANHHUNGXDA, bạn dùng lisp này xem, nó chưa có hộp thoại như trong hình, nhưng vẫn chạy tốt!

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

Chào MANHHUNGXDA,

Lisp changeattrib.lsp, Thiep đã có hộp thoại.

@ Gia_bach, Vì đỡ mất thời gian tạo hộp thoại, Thiep đã lấy hộp thoại của bác Gia_bach, file ATTI.dcl giữ nguyên, và vì vậy phải lấy 1 số mã điều khiển hộp thoại luôn. Cảm ơn Gia_bach rất nhiều.

;| Lisp thay doi gia tri thuoc tinh cua cac block reference
            CHANGE-ATTRIB.LSP V1:  10-2009                
---------------------------------------------------------|;

(defun SS-enlst	(ss / c L)
 (setq c -1)
 (repeat (sslength ss)
   (setq L (cons (ssname ss (setq c (1+ c))) L))
 )
 (reverse L)
)
(defun getatt (itm)
 (vlax-safearray->list
   (vlax-variant-value
     (vla-GetAttributes itm)
   )
 )
)
(defun List->String (Lst Del)
 (apply 'strcat
 (cons
   (car Lst)
   (mapcar
     '(lambda (l)
	(strcat Del l)
      )
     (cdr Lst)
   )
 )
 )
)
(defun dxf (id en) (cdr (assoc id (entget en))))
;;;-----------------------------------------------------------
(vl-load-com)
(defun c:chatt (/ blSet attLst lstbl bkname enblock)
 (setq enblock (car (entsel "\nPick a blockref for get name")))
 (while (null enblock)
   (princ "\nIncorrect, Please pick again:")
   (setq enblock (car (entsel "\nPick a blockref for get name")))
 )
 (setq	lstTag (getatt (vlax-ename->vla-object enblock)))
 (setq lstTag (mapcar 'vla-get-TagString lstTag))


;;;-----------------------------
 (setq dcl_id (load_dialog "ATTI.dcl"))
 (if (not (new_dialog "Atti" dcl_id))
   (alert "\nKhong tim duoc file ATTI.dcl !")
 )
;;;------- DCL Init  ------------
 (start_list "attdata" 3)
 (mapcar 'add_list lstTag)
 (end_list)
;;;------------------------------
 (set_tile "attdata" "0")
 (setq	att_list "0"
order 1
star 1
delta 1
 )
 (action_tile "okay" "(done_dialog 1)")
 (action_tile "cancel" "(done_dialog)")
 (action_tile "attdata" "(setq att_list $value)")
 (action_tile "startstr" "(setq star (atoi $value))")
 (action_tile "increment" "(setq delta (atoi $value))")
 (action_tile "order1" "(setq order 1)")
 (action_tile "order2" "(setq order 0)")
 (setq execute_it (start_dialog))
 (unload_dialog dcl_id)
;;;------- Main Program -----------
 (if (= execute_it 1)
   (progn
     (setq bkname (cdr (assoc 8 (entget enblock))))
     (princ "<<< Select blocks to change attributes >>>")
     (if
(setq
  blSet	(ssget
	  (list (cons 0 "INSERT") (cons 8 bkname) (cons 66 1))
	)
)
 (progn
   (cond ((= order 1)
	  (setq	lstbl
		 (vl-sort (SS-enlst blSet)
			  '(lambda (x y)
			    (if	(equal
				  (car (setq
					 x1 (trans (dxf 10 x) 0 1)
				       )
				  )
				  (car (setq
					 y1 (trans (dxf 10 y) 0 1)
				       )
				  )
				)
			      (< (cadr x1) (cadr y1))
			      (< (car x1) (car y1))
			    )
			  )
		 )
	  )
	 )
	 ((= order 0)
	  (setq	lstbl
		 (vl-sort (SS-enlst blSet)
			  '(lambda (x y)
			    (if	(equal
				  (car (setq
					 x1 (trans (dxf 10 x) 0 1)
				       )
				  )
				  (car (setq
					 y1 (trans (dxf 10 y) 0 1)
				       )
				  )
				)
			      (> (cadr x1) (cadr y1))
			      (> (car x1) (car y1))
			    )
			  )
		 )
	  )
	 )
   )
   (setq blSet (mapcar 'vlax-ename->vla-object lstbl))
   (setq TAG (nth (atoi att_list) lstTag))
   (setq n star)
   (foreach itm	blSet
     (setq attLst (getatt itm))
     (foreach att attLst
       (if (eq (strcase (vla-get-TagString att)) (strcase Tag))
	 (progn
	   (vla-put-textstring att (itoa n))
	   (setq n (+ n delta))
	 )
       )
     )
   )
 );;END progn
 (princ ">>> Nothing blockref selected! <<<")
     );end if
   )
 );end if
 (princ "\nTHANK YOU FOR USE LISP CHANGE ATTRIBUTES. THIEP")
 (princ)
)

@MANHHUNGXDA,

- Hôm qua thấy MANHHUNGXDA post bài: Lisp CHANGE-ATTRIB.LSP thêm hộp thoại, bây giờ lại không thấy bài post nữa, phải chăng mình có thể xóa bài mình đã post được? lâu nay thiep không biết có thể xóa được!

- Về thuật toán tính khối lượng san nền, trong lisp sannen dùng thuật toán phương pháp khối, có nghĩa là cộng thể tích các khối trụ lại. Thuật toán này, yêu cầu trắc đạc phải đo diện tích san nền với điểm đo theo 1 mạng lưới ô vuông.

Thiep xin đề xuất 1 thuật toán tính khối lượng san nền khác, bằng phương pháp mặt cắt song song, Thuật toán này, yêu cầu trắc đạc đo diện tích san nền với điểm đo theo 1 mạng lưới tự do đủ yêu cầu đo vẽ địa hình của quy phạm đo vẽ, sau đó vẽ các đường bình độ, lập các mắt cắt địa hình song song, tính diện tích mặt cắt, tính thể tích từng cặp mặt cắt song song gần nhất, cộng các thể tích này lại. Đây là kiểu tính thể tích của 1 hình thể 3 D theo kiểu tích phân thể tích.

  • 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 MANHHUNGXDA,

- Hôm qua thấy MANHHUNGXDA post bài: Lisp CHANGE-ATTRIB.LSP thêm hộp thoại, bây giờ lại không thấy bài post nữa, phải chăng mình có thể xóa bài mình đã post được? lâu nay thiep không biết có thể xóa được!

- Về thuật toán tính khối lượng san nền, trong lisp sannen dùng thuật toán phương pháp khối, có nghĩa là cộng thể tích các khối trụ lại. Thuật toán này, yêu cầu trắc đạc phải đo diện tích san nền với điểm đo theo 1 mạng lưới ô vuông.

Thiep xin đề xuất 1 thuật toán tính khối lượng san nền khác, bằng phương pháp mặt cắt song song, Thuật toán này, yêu cầu trắc đạc đo diện tích san nền với điểm đo theo 1 mạng lưới tự do đủ yêu cầu đo vẽ địa hình của quy phạm đo vẽ, sau đó vẽ các đường bình độ, lập các mắt cắt địa hình song song, tính diện tích mặt cắt, tính thể tích từng cặp mặt cắt song song gần nhất, cộng các thể tích này lại. Đây là kiểu tính thể tích của 1 hình thể 3 D theo kiểu tích phân thể tích.

 

Trân thành cảm ơn sự nhiệt tình của anh THIEP và GIA_BACH

Bài toán của em đã được giải một cách mãn nguyện

Trân trọng cảm ơ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

Chào các bạn!

Mình tuy không phải thành viên mới, nhưng với autolisp thì thật tình mình chỉ biết xài thui mà ko có khả năng đọc-hiểu-sửa. Cách đây vài tháng, mình được ông anh cho cái lisp thống kê thép, thấy khá hay, nhưng qua vài tháng sử dụng có 1 số điểm mình mong muốn được hoàn thiện thêm nên lên đây xin nhờ mấy anh em cao thủ trên diễn đàn chỉnh sửa lại giúp.

 

- Đây là form lúc đầu: http://www.cadviet.com/upfiles/2/form_luc_dau.jpg

 

- Đây là form mong muốn: http://www.cadviet.com/upfiles/2/form_mong_muon.jpg

 

- file thống kê thép : http://www.cadviet.com/upfiles/2/chinh.rar

 

- Đây là file mẫu mà mình làm: http://www.cadviet.com/upfiles/2/new_block_14.dwg

 

Cách sử dụng lisp:

- Đầu tiên, các bạn phải add 2 folder CHINH, THONGKE vao support của cad. http://www.cadviet.com/upfiles/2/cai_dat_lisp_chinh.jpg

- Apload 3 file lisp ACAD.lsp,CHINH.lsp, THONGKE.lsp

Trước khi thống kê thép, phải tạo layer thongke.

Các lệnh trong lisp:

-BTK : tạo bảng thống kê.

-BTKL: tạo bảng tổng kết thép theo D.

-THEP : tạo từng thanh thép theo mẫu cho sẵn.

-Sua : sửa lại thah thép đã tạo.

-Doi : dời qua trái qua phải hình dạng thanh thép.

....

còn 1 số lệnh nữa mà mình ko xài đc cũng ko biết sao :bigsmile:

Cám ơn tác giả của lisp này :bigsmile:

 

Theo cá nhân mình thấy lisp này xài cũng hay, và vì mình xài quen rồi nên mong muốn nó đc hoàn thiện hơn để trợ giúp công việc thống kê thép được tốt hơn

 

 

 

link mediafire.com:

 

http://www.mediafire.com/file/mny54g4nrjt/Form luc dau.JPG

 

http://www.mediafire.com/file/bmazj5jyegj/Form mong muon.JPG

 

file thống kê thép : http://www.mediafire.com/file/wzbf1j1uczn/CHINH.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

Em có lisp copy thứ tự này thấy dùng khá hay : http://www.cadviet.com/upfiles/2/copy_thu_tu_coo.lsp

Nhưng e có một thắc mắc nhỏ thế này, lisp này là copy theo thứ tự tăng dần với hệ số là +1, khi e vẽ đường đồng mức san nền thì không phải hệ số lúc nào cũng là +1 mà có thể khác đi, vậy các bác giúp em chỉnh lại lisp trên có hệ số mà do ta tự chọn khi copy nhé. Nghĩa là khi đánh lệnh COO thì hiện ra dòng command là lựa chọn hệ số (ví dụ ta có thể nhập vào là -1,-0.5,-0.2, 0.2, 0.5...v.v sau đấy copy là số tự động nhảy khi cộng trừ hệ số đó. Thanks các bác nhiều nhé !!! :bigsmile:

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 có lisp copy thứ tự này thấy dùng khá hay : http://www.cadviet.com/upfiles/2/copy_thu_tu_coo.lsp

Nhưng e có một thắc mắc nhỏ thế này, lisp này là copy theo thứ tự tăng dần với hệ số là +1, khi e vẽ đường đồng mức san nền thì không phải hệ số lúc nào cũng là +1 mà có thể khác đi, vậy các bác giúp em chỉnh lại lisp trên có hệ số mà do ta tự chọn khi copy nhé. Nghĩa là khi đánh lệnh COO thì hiện ra dòng command là lựa chọn hệ số (ví dụ ta có thể nhập vào là -1,-0.5,-0.2, 0.2, 0.5...v.v sau đấy copy là số tự động nhảy khi cộng trừ hệ số đó. Thanks các bác nhiều nhé !!! :bigsmile:

Chủ đề này đã có người hỏi rồi. Và được trả lời tại đây :

Topic Viết Lisp theo yêu cầu Phần 1 - Bài viết số 1962

 

@All : Việc tìm kiếm lại bài viết của mình rất khó trong topic, nhất là topic Viết Lisp theo yêu cầu. Thực sự là rất khó khăn mới tìm được đúng bài viết đã post để giúp cho bạn Minhnghi. Nên cũng dám mong các bạn không nên post các bài viết có nội dung chẳng liên quan đến topic, nhất là topic này -> nhằm tạo điều kiện thuận lợi cho người tìm kiếm.

Thanks

  • 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

Cảm ơn bạn Tue_NV đã nói về số PI

Mình hay phải làm công việc xác định đường kính của hình trụ D khi biết thể tích V ( thể tích cần coi như đã biết) và chiều cao H (đã biêt) hình trụ bằng công thức:

V= Pi *( D ^2) * H / 4 >>> D= ( V*4/ Pi/H)^0.5

Cách này tính cũng đơn giản nhưng tính nhiều cũng nhàm chán và nhức đầu. Nhờ các bạn viết hộ cái lisp để tính nhanh.

 

Ví dụ mình vẽ solid hình trụ đường kính 155 cao 25 biết được thông số về thể tích:

Select objects: 1 found

Select objects:

---------------- SOLIDS ----------------

 

Mass: 471729.7719

Volume: 471729.7719

 

 

Từ D= 155, H= 25 biết được thể tích của nó là 471729.7719

vậy V= 450000, H= 25 thì >>> D= ?

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 Tue_NV đã nói về số PI

Mình hay phải làm công việc xác định đường kính của hình trụ D khi biết thể tích V ( thể tích cần coi như đã biết) và chiều cao H (đã biêt) hình trụ bằng công thức:

V= Pi *( D ^2) * H / 4 >>> D= ( V*4/ Pi/H)^0.5

Cách này tính cũng đơn giản nhưng tính nhiều cũng nhàm chán và nhức đầu. Nhờ các bạn viết hộ cái lisp để tính nhanh.

 

Ví dụ mình vẽ solid hình trụ đường kính 155 cao 25 biết được thông số về thể tích:

Select objects: 1 found

Select objects:

---------------- SOLIDS ----------------

 

Mass: 471729.7719

Volume: 471729.7719

Từ D= 155, H= 25 biết được thể tích của nó là 471729.7719

vậy V= 450000, H= 25 thì >>> D= ?

Bạn sử dụng Code này thử nhé :

(defun c:dk (/ V H tam)
(setq tam (getpoint "\nNhap tam cua solid hinh tru:"))
(setq V (getreal "\nNhap the tich cua solid hinh tru:")
H (getreal "\nNhap chieu cao cua solid hinh tru: ")
D (sqrt (/ (* V 4) (* H pi)))
)
(command "cylinder" tam (/ D 2) H) 
(alert 
(strcat "\n The tich cua solid hinh tru la :  " (rtos V 2 3) 
	"\n\n Chieu cao cua solid hinh tru la :  " (rtos H 2 3)
"\n\n Ket qua tinh duong kinh cua solid hinh tru :  " (rtos D 2 3)
)
)
(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

Hôm trước anh Tue_NV đã viết giúp em lisp sapxep.lsp để thống kê các text trong một bản vẽ vào một bảng. Vậy nay anh và mọi người có thể viết giúp em một lisp có công dụng ngược lại không ạ?

 

Đặt vấn đề: Sau khi tính toán thủy lực mạng lưới, em xuất kết quả từ Epanet sang Excel, và nhờ sự giúp đỡ của anh anhcos, lại xuất được từ Excel sang Autocad. Và em có một file cad như sau:

http://www.cadviet.com/upfiles/2/doantonghopk.dwg

Trong đó có một bên là sơ đồ mạng lưới đường ống và một bên là bảng thống kê các số liệu của đường ống và nút. Công việc của em là cần thay các số liệu từ bảng vào bản đồ cho phù hợp với kết quả tính toán mới.

 

Vậy cho em hỏi, có cách nào giải quyết nào giải quyết công việc này nhanh hơn phương pháp thủ công.

Liệu có thể sử dụng được Attribute block?

Dữ liệu đầu vào gồm:

+ Bảng thống kê nút, gồm các thông tin: tên nút, cao độ, áp lực dư

+ Bảng thống kê đường ống, gồm các thông tin: số thứ tự ống, từ nút đến nút, chiều dài, đường kính, lưu lượng, vận tốc.

+ Sơ đồ mạng lưới.

Dữ liệu đầu ra: Sơ đồ tính toán thủy lực, trong đó:

+ Tại nút: thông tin cao độ ở nửa đường tròn phía dưới.

+ Trên đường ống: 5 thông tin gồm: chiều dài, lưu lượng, đường kính, vận tốc, độ dốc sắp xếp như hình vẽ. Trong đó, độ dốc được tính như trong hình vẽ.

 

Rất mong được giúp đỡ! Cảm ơ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

Nhờ các bác viết giúp cái lisp như thế này:

bản vẽ của mình có một số đường có cao độ z, khi thao tác gặp rất nhiều bất tiện, mình muốn đưa các đối tượng đó cao độ z=0. Nhưng sau khi dung lisp supeiron trên diễn đàn thì các đối tượng nhảy lung tung hết. Nhờ các bác viết dùm lisp đưa các đối tượng về 0 nhưng không làm thay đổi vị trí của nó trên bản vẽ.

file chạy thử: http://www.cadviet.com/upfiles/2/bd.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
Nhờ các bác viết giúp cái lisp như thế này:

bản vẽ của mình có một số đường có cao độ z, khi thao tác gặp rất nhiều bất tiện, mình muốn đưa các đối tượng đó cao độ z=0. Nhưng sau khi dung lisp supeiron trên diễn đàn thì các đối tượng nhảy lung tung hết. Nhờ các bác viết dùm lisp đưa các đối tượng về 0 nhưng không làm thay đổi vị trí của nó trên bản vẽ.

file chạy thử: http://www.cadviet.com/upfiles/2/bd.dwg

Đưa các đường contour về cao độ 0, có đưa cả text cao độ về cao độ 0 luôn không conghoan?

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 giúp cái lisp như thế này:

bản vẽ của mình có một số đường có cao độ z, khi thao tác gặp rất nhiều bất tiện, mình muốn đưa các đối tượng đó cao độ z=0. Nhưng sau khi dung lisp supeiron trên diễn đàn thì các đối tượng nhảy lung tung hết. Nhờ các bác viết dùm lisp đưa các đối tượng về 0 nhưng không làm thay đổi vị trí của nó trên bản vẽ.

file chạy thử: http://www.cadviet.com/upfiles/2/bd.dwg

Sao bác không dùng lệnh Flatten của Cad?

  • 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

Xin các cao thủ chỉ giáo !

Trong cad em thấy để sửa nhiều đối tượng cùng một thật dài dòng, ví dụ như sủa text trong bình đồ cứ phải ghõ như sau: SSX / select/ enter/ - CHT / select +P/ enter rồi tiếp tục chọn chiều cao, rộng...., mỗi lần làm như vậy thật khó chịu, em mong các bác cao thủ giúp em một cái lisp nào đó đơn giản hơn, ngắn hơn. 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 các cao thủ chỉ giáo !

Trong cad em thấy để sửa nhiều đối tượng cùng một thật dài dòng, ví dụ như sủa text trong bình đồ cứ phải ghõ như sau: SSX / select/ enter/ - CHT / select +P/ enter rồi tiếp tục chọn chiều cao, rộng...., mỗi lần làm như vậy thật khó chịu, em mong các bác cao thủ giúp em một cái lisp nào đó đơn giản hơn, ngắn hơn. 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 các cao thủ chỉ giáo !

Trong cad em thấy để sửa nhiều đối tượng cùng một thật dài dòng, ví dụ như sủa text trong bình đồ cứ phải ghõ như sau: SSX / select/ enter/ - CHT / select +P/ enter rồi tiếp tục chọn chiều cao, rộng...., mỗi lần làm như vậy thật khó chịu, em mong các bác cao thủ giúp em một cái lisp nào đó đơn giản hơn, ngắn hơn. Cảm ơn các bác nhiều !

Bạn chọn các text cần thay đổi. Nhấn Ctrl+1 Cad sẽ hiện lên bảng Properties. Trong bảng đó nó có chiều cao, độ rộng...bạn có thể chỉnh trực tiếp trong đó

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.

×