Đến nội dung


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

Viết Lisp theo yêu cầu


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

#1061 ph168xd

ph168xd

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 779 Bài viết
Điểm đánh giá: 309 (khá)

Đã gửi 06 September 2008 - 08:38 PM

Chào các anh. Em đang cần 1lish có nội dung như sau:
Trên bản vẽ có các Block với những tỷ lệ scale khác nhau
Dùng lish nhập tỷ lệ. Toàn bộ các block sẽ đưa từ tỷ lệ ban đầu, về tỷ lệ vừ nhập
VD.
Em có 2 block. A đã scale 0.5 so với Block gốc. B đã scale 0.2 so với Block gốc
Sd lish. Chọn đối tg cần tác động. Nhập. 0.75 Block A ->có tỷ lệ 0.75 so với Block gốc, B -> có tỷ lệ 0.75 so với Block gốc.
Thanks các rất nhiều
  • 0

#1062 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 06 September 2008 - 08:49 PM

Chào các anh. Em đang cần 1lish có nội dung như sau:
Trên bản vẽ có các Block với những tỷ lệ scale khác nhau
Dùng lish nhập tỷ lệ. Toàn bộ các block sẽ đưa từ tỷ lệ ban đầu, về tỷ lệ vừ nhập
VD.
Em có 2 block. A đã scale 0.5 so với Block gốc. B đã scale 0.2 so với Block gốc
Sd lish. Chọn đối tg cần tác động. Nhập. 0.75 Block A ->có tỷ lệ 0.75 so với Block gốc, B -> có tỷ lệ 0.75 so với Block gốc.
Thanks các rất nhiều

Bạn dùng lệnh SBTD, chọn các block rồi nhập vào tỷ lệ 1.

(defun c:sbtd()
(defun s1(ent)
(setq tt (entget ent)
ctl (cdr (assoc 41 tt))
ctl (abs (/ tl ctl))
p (cdr (assoc 10 tt))
)
(command ".scale" ent "" p ctl)
)
(setq ss (ssget '((0 . "INSERT")))
tl (getreal "\nTy le: "))
(luuos)
(setvar "osmode" 0)
(sudung s1 ss)
(traos)
)
(defun luuos ()
(setq
HOANH_OSMODE (getvar "OSMODE")
HOANH_AUTOSNAP (getvar "AUTOSNAP")
)
)
(defun traos ()
(if HOANH_OSMODE
(setvar "OSMODE" HOANH_OSMODE)
)
(if HOANH_AUTOSNAP
(setvar "AUTOSNAP" HOANH_AUTOSNAP)
)
)

  • 0

#1063 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 06 September 2008 - 09:14 PM

file lisp dưới đây đã cải tiến, sẽ dùng được với cả hai bên, với điều kiện là bạn phải dùng block "B-D" mà tôi đã move text vào tâm.
file dwg có chứa block "B-D" đã sửa đổi: http://www.cadviet.c...pfiles/bvdo.zip

Cám ơn Bác Nguyen Hoanh rất nhiều.
+ Khi dùng AutoCAD 2008 & 2009 thì phải thêm (vl-load-com), nếu không sẽ bị báo lỗi như đã nêu trong bài trước.
+ Cái Block B-D cần phải sửa lại thì mới in đúng scale trong model.
PP sẽ search LISP JP rồi sẽ thực tập lại.
Good night Bác.
  • 0

#1064 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 07 September 2008 - 09:53 PM

file lisp dưới đây đã cải tiến, sẽ dùng được với cả hai bên, với điều kiện là bạn phải dùng block "B-D" mà tôi đã move text vào tâm.
file dwg có chứa block "B-D" đã sửa đổi: http://www.cadviet.c...pfiles/bvdo.zip

PP nghỉ rằng nếu Bác Viết thêm đoạn LISP dùng lệnh Line để bắt điểm vừa có này rối chỉ chọn điểm cuối của đ/ô đã vẽ trước đó. Như vậy chắc sẽ không cần đến LISP Joint Point (PP chưa tìm ra).
Thật tình là PP chưa biết viết cái ngôn ngữ LISP (Lost In Stupid Spaces) này bao giờ :lol: . Mong Bác thông cảm về đề nghị trên
  • 0

#1065 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 07 September 2008 - 10:02 PM

PP nghỉ rằng nếu Bác Viết thêm đoạn LISP dùng lệnh Line để bắt điểm vừa có này rối chỉ chọn điểm cuối của đ/ô đã vẽ trước đó. Như vậy chắc sẽ không cần đến LISP Joint Point (PP chưa tìm ra).
Thật tình là PP chưa biết viết cái ngôn ngữ LISP (Lost In Stupid Spaces) này bao giờ :lol: . Mong Bác thông cảm về đề nghị trên

OK,
Đây là lisp đã cải tiến, bạn thử xem có đúng ý không:
(defun c:xd ()
(setq sel (entsel "\nHay pick mot diem thuoc mat tien nha: "))
(if (or (not sel)
(/= "LINE" (cdr (assoc 0 (entget (car sel)))))
)
(alert
"Ban chon khong dung\nHay pick vao mot doi tuong LINE"
)
(progn
(setq
ent (car sel)
p1 (cdr (assoc 10 (entget ent)))
phuong (trans (getpoint (cadr sel) "\nHay pick huong dat chu: ")
1
0
)
B_ (getreal "\mB (m): ")
D_ (getstring "\mD (m): ")
p (vlax-curve-getClosestPointTo ent (trans (cadr sel) 1 0))

)
(saveos)
(changegeo p p1 phuong)
(setq pI_ (trans (list 0.0 4300.0 0.0) 1 0)
pPoint (trans (list 0.0 (* -1000.0 B_) 0.0) 1 0)
)
(restoregeo)
(command ".insert"
"B-D"
(trans pI_ 0 1)
1.0
1.0
0.0
(strcat (rtos B_ 2 1) "B")
(strcat D_ "D")
)
(if xdlast
(command ".line" xdlast pPoint "")
)
(setq xdlast pPoint)
(restoreos)
)
)
)
(defun saveos ()
(setq cv_oldos (getvar "osmode"))
(setvar "osmode" 0)
)
(defun restoreos ()
(setvar "osmode" cv_oldos)
(setq cv_oldos nil)
)
(defun changegeo (p p1 phuong)
(command ".ucs" "w")
(command ".ucs" "3" p p1 phuong)
)
(defun restoregeo ()
(command ".ucs" "p")
(command ".ucs" "p")
)

  • 0

#1066 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 08 September 2008 - 06:21 AM

OK,
Đây là lisp đã cải tiến, bạn thử xem có đúng ý không:

Thật tuyệt vời Bác Nguyen Hoanh ạ.
Như PP có đề cập trong bài truớc, nếu sử dụng lại input khoảng cách mm rồi chia cho 1000 thì sẽ chỉ cần nhậpt text mD thôi.
Như vậy sẽ tiết kiệm rất nhiều lần nhập mB. Nhờ Bác thêm lần nữa.
Cám ơn Bác rất nhiều.
  • 0

#1067 tranchan

tranchan

    biết lệnh break

  • Members
  • PipPipPipPip
  • 221 Bài viết
Điểm đánh giá: 93 (tàm tạm)

Đã gửi 08 September 2008 - 12:01 PM

Không biết có bác nào giúp cho cái này được không? Làm 1 file lisp để vẽ 1 sơ đồ dàn cong. Biết nhịp vuợt L, biết độ vồng f, biết số khoảng chia bụng dàn.....?

http://www.cadviet.com/upfiles/vom.bmp

Cảm ơn rất nhiều....
  • 0

#1068 hx_classic

hx_classic

    Chưa sử dụng CAD

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

Đã gửi 08 September 2008 - 06:30 PM

Thưa các anh em, em là mem mới, nhưng xài cad khá lâu rồi...mang tiếng xài cad khá lâu mà không tự viết nổi 1 cái lisp cho mình, nên post lên đây nhờ anh NguyenHoanh viết giúp em cái lisp với những lệnh sau, em xin đội ơn lắm lắm

q1 là lệnh offset kích thước 55
q2 là...........................110
q3 là...........................220
q4 là...........................50
q5 là...........................100


:) thanks pro nhiều lắm lắm :)
  • 0

#1069 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 08 September 2008 - 07:49 PM

Không biết có bác nào giúp cho cái này được không? Làm 1 file lisp để vẽ 1 sơ đồ dàn cong. Biết nhịp vuợt L, biết độ vồng f, biết số khoảng chia bụng dàn.....?

http://www.cadviet.com/upfiles/vom.bmp

Cảm ơn rất nhiều....

Chưa đủ dữ liệu. Đường cong độ vồng là đường cong bậc mấy?
  • 0

#1070 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 08 September 2008 - 07:56 PM

Thưa các anh em, em là mem mới, nhưng xài cad khá lâu rồi...mang tiếng xài cad khá lâu mà không tự viết nổi 1 cái lisp cho mình, nên post lên đây nhờ anh NguyenHoanh viết giúp em cái lisp với những lệnh sau, em xin đội ơn lắm lắm

q1 là lệnh offset kích thước 55
q2 là...........................110
q3 là...........................220
q4 là...........................50
q5 là...........................100


:) thanks pro nhiều lắm lắm :)

Bạn xem lisp của bạn quocdung_acad ở đây:
http://www.cadviet.c...?showtopic=3222
  • 0

#1071 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 08 September 2008 - 07:59 PM

Thưa các anh em, em là mem mới, nhưng xài cad khá lâu rồi...mang tiếng xài cad khá lâu mà không tự viết nổi 1 cái lisp cho mình, nên post lên đây nhờ anh NguyenHoanh viết giúp em cái lisp với những lệnh sau, em xin đội ơn lắm lắm

q1 là lệnh offset kích thước 55
q2 là...........................110
q3 là...........................220
q4 là...........................50
q5 là...........................100


:) thanks pro nhiều lắm lắm :)

đây:

(defun C:q1 ()
(command "offset" "55")
)
(defun C:q2 ()
(command "offset" "110")
)
(defun C:q3 ()
(command "offset" "220")
)
(defun C:q4 ()
(command "offset" "50")
)
(defun C:q5 ()
(command "offset" "100")
)

Ồ vừa post xong thì thấy bác NguyenHoanh post.
  • 0

#1072 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 08 September 2008 - 08:04 PM

Không biết có bác nào giúp cho cái này được không? Làm 1 file lisp để vẽ 1 sơ đồ dàn cong. Biết nhịp vuợt L, biết độ vồng f, biết số khoảng chia bụng dàn.....?

http://www.cadviet.com/upfiles/vom.bmp

Cảm ơn rất nhiều....

Dễ vẽ, vẽ nhanh, vậy mà cũng cần lisp sao bạn?
  • 0

#1073 hx_classic

hx_classic

    Chưa sử dụng CAD

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

Đã gửi 08 September 2008 - 10:55 PM

thanks mọi người nhiều lắm, nhưng mà em có 1 thắc mắc, ban đầu em add lisp của mọi người vào rồi dùng lệnh Reinit thì có tác dụng, mãi đến 1 lúc sau add 1 đống lisp rồi thfi lệnh Reinit ko có tác dụng nữa, giúp em với :)
  • 0

#1074 hx_classic

hx_classic

    Chưa sử dụng CAD

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

Đã gửi 08 September 2008 - 10:56 PM

thanks mọi người nhiều lắm, nhưng mà em có 1 thắc mắc, ban đầu em add lisp của mọi người vào rồi dùng lệnh Reinit thì có tác dụng, mãi đến 1 lúc sau add 1 đống lisp rồi thfi lệnh Reinit ko có tác dụng nữa, giúp em với :)
  • 0

#1075 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 08 September 2008 - 11:09 PM

thanks mọi người nhiều lắm, nhưng mà em có 1 thắc mắc, ban đầu em add lisp của mọi người vào rồi dùng lệnh Reinit thì có tác dụng, mãi đến 1 lúc sau add 1 đống lisp rồi thfi lệnh Reinit ko có tác dụng nữa, giúp em với :)

Ồ. Lệnh Reinit chỉ giúp cập nhật file acad.pgp thui mà, đâu có tác dụng với file lisp.
  • 0

#1076 tranchan

tranchan

    biết lệnh break

  • Members
  • PipPipPipPip
  • 221 Bài viết
Điểm đánh giá: 93 (tàm tạm)

Đã gửi 09 September 2008 - 01:04 PM

Dễ vẽ, vẽ nhanh,....


Thực ra cũng nhìn là vậy thôi chứ dân kết cấu vẽ đâu fải vẽ sơ đồ không đâu còn fải triển khai chi tiết mắt nữa.. vậy tiết kiệm công đoạn nào hay đoạn ấy...Ví như khoảng chia bụng kèo >=3 m. Vuợt nhịp 50 m là fải chia ra tương ứng nữa.... Đó là chưa kể trước khi ra sơ đồ cad là fải chạy mô hình trên SAP ổn nữa chứ..?


Chưa đủ dữ liệu. Đường cong độ vồng là đường cong bậc mấy?


đuờng cong chỉ là cung đi qua 3 điểm thôi....
  • 0

#1077 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 09 September 2008 - 07:57 PM

Trong bản vẽ này http://www.cadviet.c...iles/Layers.zip , PP có vẽ 4 khung kèm theo tượng tương cho 4 images (vì gởi kẻm file hình thì dung lượng lớn quá) được vẽ chồng lên nhau và có 4 layers có tên khác nhau: Image1, Image2, Image3 & Image4. Ngoài ra còn có 4 layers dành cho mỗi nét vẽ khác nhau: Line1, Line2, Line3 & Line4.
Quả thật là vì chưa biết viết LISP nên PP phải nhờ đến các Bác giúp cho 1 việc như sau:
1. Về các layer Images:
+ Đánh lệnh I0 thì các layer Images tắt hết.
+ Đánh I1 thì chỉ layer Image1 hiện lên, các layer Images kia vẫn tắt.
+Tương tư như vậy muốn layer Image nào hiện lên thì chỉ cần đánh các lệnh như I2, I3, I4...
Note: Layer Image chỉ cho phép hiện mỗi 1 trong số những layer Images có trong bản vẽ mà thôi.
2. Về các layer Lines:
+ Đánh lệnh L0 thì layer Lines tắt hết.
+ Đánh lệnh Lall thì các layer Lines ĐỀU hiện lên.
+ Sau đó muốn layer Line nào hiện lên thì đánh lệnh như L11, tắt thì đánh lệnh L10 (L1= Line1 và chữ số sau: 1 =on, 0= off)
Note: Các layer Lines cho phép hiện nhiều ít tuỳ ý.
Hy vọng Các Bác hiểu ý trên của PP.
Xin cám ơn rất nhiều
  • 0

#1078 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 10 September 2008 - 08:03 AM

Trong bản vẽ này http://www.cadviet.c...iles/Layers.zip , PP có vẽ 4 khung kèm theo tượng tương cho 4 images (vì gởi kẻm file hình thì dung lượng lớn quá) được vẽ chồng lên nhau và có 4 layers có tên khác nhau: Image1, Image2, Image3 & Image4. Ngoài ra còn có 4 layers dành cho mỗi nét vẽ khác nhau: Line1, Line2, Line3 & Line4.
Quả thật là vì chưa biết viết LISP nên PP phải nhờ đến các Bác giúp cho 1 việc như sau:
1. Về các layer Images:
+ Đánh lệnh I0 thì các layer Images tắt hết.
+ Đánh I1 thì chỉ layer Image1 hiện lên, các layer Images kia vẫn tắt.
+Tương tư như vậy muốn layer Image nào hiện lên thì chỉ cần đánh các lệnh như I2, I3, I4...
Note: Layer Image chỉ cho phép hiện mỗi 1 trong số những layer Images có trong bản vẽ mà thôi.
2. Về các layer Lines:
+ Đánh lệnh L0 thì layer Lines tắt hết.
+ Đánh lệnh Lall thì các layer Lines ĐỀU hiện lên.
+ Sau đó muốn layer Line nào hiện lên thì đánh lệnh như L11, tắt thì đánh lệnh L10 (L1= Line1 và chữ số sau: 1 =on, 0= off)
Note: Các layer Lines cho phép hiện nhiều ít tuỳ ý.
Hy vọng Các Bác hiểu ý trên của PP.
Xin cám ơn rất nhiều


(DEFUN C:I0()
(command "layer" "off" "Image1" "")
(command "layer" "off" "Image2" "")
(command "layer" "off" "Image3" "")
(command "layer" "off" "Image4" "")
)

(DEFUN C:I1()
(command "layer" "on" "Image1" "")
(command "layer" "off" "Image2" "")
(command "layer" "off" "Image3" "")
(command "layer" "off" "Image3" "")
)

(DEFUN C:I2()
(command "layer" "off" "Image1" "")
(command "layer" "on" "Image2" "")
(command "layer" "off" "Image3" "")
(command "layer" "off" "Image4" "")
)

(DEFUN C:I3()
(command "layer" "off" "Image1" "")
(command "layer" "off" "Image2" "")
(command "layer" "on" "Image3" "")
(command "layer" "off" "Image4" "")
)

(DEFUN C:I4()
(command "layer" "off" "Image1" "")
(command "layer" "off" "Image2" "")
(command "layer" "off" "Image3" "")
(command "layer" "on" "Image4" "")
)

Còn lại thì Phiphi- viết tiếp nha
  • 1

#1079 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 10 September 2008 - 08:37 AM

Còn lại thì Phiphi- viết tiếp nha

Thanks you Bác nhé.
Chắc đây sẽ là LISP đầu tiên PP bắt đầu viết. Và sẽ nhờ Bác sửa hộ dài dài :)
  • 0

#1080 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 10 September 2008 - 08:39 AM

Thực ra cũng nhìn là vậy thôi chứ dân kết cấu vẽ đâu fải vẽ sơ đồ không đâu còn fải triển khai chi tiết mắt nữa.. vậy tiết kiệm công đoạn nào hay đoạn ấy...Ví như khoảng chia bụng kèo >=3 m. Vuợt nhịp 50 m là fải chia ra tương ứng nữa.... Đó là chưa kể trước khi ra sơ đồ cad là fải chạy mô hình trên SAP ổn nữa chứ..?
đuờng cong chỉ là cung đi qua 3 điểm thôi....

Đường cong đi qua 3 điểm thì là đường bậc 2 còn gì. Tôi đã vẽ thử, dùng vài lệnh cơ bản L, ARC, device là xong mà. Nhanh không. Viết Lisp thành ra phức tạp trong các kiểu thanh dàn bố trí khác nhau.
  • 0