Đế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

#801 hocvecad

hocvecad

    biết vẽ arc

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

Đã gửi 25 June 2008 - 02:10 AM

Bác Hoành ơi , em đã đọc và sử dụng lệnh Cinvis của bác . Vậy bác có thể giúp em viết lisp hiện đối tượng theo màu không . Ví dụ như chỉ hiện đối tượng có màu đỏ chẳng hạn . Em rất khâm phục bác . Trình độ Lisp của bác em học cả đời chắc cũng ko theo nổi .

Ôi em xin lỗi , em vừa post xong thì cũng vừa tìm ra lệnh Cninvis . Mong các bác bỏ qua . :mellow:
  • 0

#802 en_bien

en_bien

    Chưa sử dụng CAD

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

Đã gửi 25 June 2008 - 08:55 AM

1) Yêu cầu của bạn không liên quan gì đến lisp
2) Cách làm cụ thể:
- Tạo 1 bản vẽ mới, tự thiết lập layer, textstyle, dimstyle, linestyle, khung bản vẽ, khung tên... mẫu theo ý bạn
- Saveas *.dwt (tên gì tuỳ bạn, không nhất thiết là acad.dwt) -> bạn đã có 1 bản vẽ mẫu dạng *.dwt (AutoCAD Drawing Template), được lưu trữ để sử dụng nhiều lần sau này.
- Lập bản vẽ mới theo mẫu: Lệnh New - trong hộp thoại Create New Drawing, chọn nút "Use a template", chỉ định file *.dwt mà bạn đã lưu trữ nói trên.
Kết quả: toàn bộ các thiết lập trước đây của bạn được gán cho bản vẽ mới vừa tạo, không phải mất công làm lại các thao tác (khá mất thời gian và nhàm chán) đó nữa.
3) Bạn chưa nắm được cách tạo và dùng *.dwt tức là chưa vượt qua giai đoạn "AutoCAD cơ bản", đừng để ý đến các file *.sld, *.arx làm gì cho nó mệt người. Hãy đợi đấy!

Cám ơn a nhiều, vì e thấy hỏi ở đây được mấy a trả lời nhanh hơn. :mellow:
  • 0

#803 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 25 June 2008 - 09:04 AM

Cám ơn a nhiều, vì e thấy hỏi ở đây được mấy a trả lời nhanh hơn. :mellow:

Nhưng cũng nhanh bị ban nick hơn!
  • 0

#804 PhucQuan

PhucQuan

    biết zoom

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

Đã gửi 26 June 2008 - 06:11 PM

Chào cả nhà! Xin được bỏ qua các câu từ khách sáo, vào thẳng vấn đề cần anh em giúp đỡ.

1/ Lệnh getpoint hình như không truy bắt điểm được với phương thức Shift + Chuột phải + chọn From.
2/ Có biến hệ thống hoặc lệnh nào để chọn một Dim có sẵn trong bản vẽ để thao tác trong lisp không?
3/ Muốn chèn một đoạn text (ví dụ : "A-A"), "A-A" được canh trung tâm và ngay tại điểm P1(x,y) thì phải dùng lệnh gì?

Đang tập viết lisp nên không muốn xin toàn bộ lisp mà chỉ xin từng đoạn code không biết.
Cám ơn cả nhà, đang kẹt ở 3 điểm đó mà tìm trên diễn đàn chưa thấy (có thể do chưa tìm kĩ, nhưng đang cần gấp nên anh em thông cảm)
  • 0

#805 Snowman

Snowman

    biết lệnh mirror

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

Đã gửi 26 June 2008 - 11:26 PM

Chào cả nhà! Xin được bỏ qua các câu từ khách sáo, vào thẳng vấn đề cần anh em giúp đỡ.

1/ Lệnh getpoint hình như không truy bắt điểm được với phương thức Shift + Chuột phải + chọn From.
2/ Có biến hệ thống hoặc lệnh nào để chọn một Dim có sẵn trong bản vẽ để thao tác trong lisp không?
3/ Muốn chèn một đoạn text (ví dụ : "A-A"), "A-A" được canh trung tâm và ngay tại điểm P1(x,y) thì phải dùng lệnh gì?

Đang tập viết lisp nên không muốn xin toàn bộ lisp mà chỉ xin từng đoạn code không biết.
Cám ơn cả nhà, đang kẹt ở 3 điểm đó mà tìm trên diễn đàn chưa thấy (có thể do chưa tìm kĩ, nhưng đang cần gấp nên anh em thông cảm)

Mình xin được góp ý thẳng thắn (không dài dòng, khách sáo): Bạn nên tìm hiểu một cách cơ bản và tường tận về các đối tượng CAD, các lệnh và các phương thức thao tác, làm việc trên CAD trước khi học cách viết lisp. Vì nói một cách khái quát: lisp chỉ là mô phỏng lại quá trình tư duy và làm thay các thao tác của người vẽ mà thôi.
Về các câu hỏi của bạn xin nhường lời cho các "cao thủ" trên diễn đàn cho ý kiến :mellow:
  • 0

. - ' * ' - .. - ... "Sống trong đời sống cần có một tấm lòng..." . - ' * ' - .. -
-----------------------------------------------------------------------------------

Hình đã gửi Hình đã gửi


#806 PhucQuan

PhucQuan

    biết zoom

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

Đã gửi 26 June 2008 - 11:56 PM

Mình xin được góp ý thẳng thắn (không dài dòng, khách sáo): Bạn nên tìm hiểu một cách cơ bản và tường tận về các đối tượng CAD, các lệnh và các phương thức thao tác, làm việc trên CAD trước khi học cách viết lisp. Vì nói một cách khái quát: lisp chỉ là mô phỏng lại quá trình tư duy và làm thay các thao tác của người vẽ mà thôi.
Về các câu hỏi của bạn xin nhường lời cho các "cao thủ" trên diễn đàn cho ý kiến :mellow:


Chào bạn Snowman!

Hình như mình viết ngắn gọn quá nên có lẽ bạn nghĩ mình không biết vẽ CAD, mình cũng biết sơ sơ rồi!

Mình viết lại để anh em có thể giúp mình, mình đang làm về kết cấu, trong bản vẽ kết cấu các mặt cắt dùng nhiều kinh khủng, mình muốn viết một lisp nhập vào số hiệu MC, tiết diện, thép chủ trên, thép chủ dưới, thép đai và điểm chèn MC, khi đó lisp sẽ vẽ mặt cắt với đầy đủ thông tin trên (trước giờ vẫn copy và sửa lại cho đúng với mặt cắt), tuy nhiên gặp phải các vấn đề sau:

1/ Khi chọn điểm chèn MC thì không dùng được phương thức chọn điểm từ một điểm khác (Shift+Chuột Phải+ Chọn from)
2/ Không biết thay đổi loại Dim, khi chạy lisp, nó sẽ lấy dim hiện tại mà dim, có khi không đúng, nên cần xác định đúng loại dim mà mình muốn.

Mong được giúp đỡ!
  • 0

#807 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 27 June 2008 - 08:07 AM

Chào bạn Snowman!

Hình như mình viết ngắn gọn quá nên có lẽ bạn nghĩ mình không biết vẽ CAD, mình cũng biết sơ sơ rồi!

Mình viết lại để anh em có thể giúp mình, mình đang làm về kết cấu, trong bản vẽ kết cấu các mặt cắt dùng nhiều kinh khủng, mình muốn viết một lisp nhập vào số hiệu MC, tiết diện, thép chủ trên, thép chủ dưới, thép đai và điểm chèn MC, khi đó lisp sẽ vẽ mặt cắt với đầy đủ thông tin trên (trước giờ vẫn copy và sửa lại cho đúng với mặt cắt), tuy nhiên gặp phải các vấn đề sau:

1/ Khi chọn điểm chèn MC thì không dùng được phương thức chọn điểm từ một điểm khác (Shift+Chuột Phải+ Chọn from)
2/ Không biết thay đổi loại Dim, khi chạy lisp, nó sẽ lấy dim hiện tại mà dim, có khi không đúng, nên cần xác định đúng loại dim mà mình muốn.

Mong được giúp đỡ!

Xin trả lời 2 câu hỏi của bạn:
1. Vẫn dùng được Shift+Chuột Phải+ Chọn from trong hàm getpoint.
2. Muốn đặt style dim hiện hành sang 'kiểu nào đó' thì bạn dùng lệnh (setvar "dimstyle" "kiểu nào đó")
  • 1

#808 lê văn tuấn

lê văn tuấn

    Chưa sử dụng CAD

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

Đã gửi 27 June 2008 - 08:39 AM

[color="#FF0000"]hihi vui thế nhỉ không ngờ diễn đàn của chúng ta lại đông anh em thế:tất cả mọi người đều giỏi cả em hâm mộ quá! các bác ơi bác nào có cái lisp vẽ mặt cắt đất không cho em với em đang làm xây dựng nhưng mỗi lần vẽ mặt cắt đất tự nhiên hoặ là đất đắp thì rât lâu và cảm thấy nhàm chán bác nào có thì cho em với nhé:em muốn tức là mìh chỉ cần chọn điểm đầu và điểm cuối sau đó enter là đã thể hiện đc mặt cắt đất trên đó:các bác cố giúp em với nhé em sẽ hậu tạ:

Bác hoành của chúng ta hay thật ấy:em có cô em gái xinh lắm nếu bác chưa có vợ em sẽ giới thiệu nó cho bác nhé:hehheh
Cứ chơi cho hết đời trai trẻ
rồi âm thầm lặng lẽ đạp xích lô

  • 0

#809 cuongtk2

cuongtk2

    biết vẽ ellipse

  • Members
  • PipPip
  • 59 Bài viết
Điểm đánh giá: 20 (tàm tạm)

Đã gửi 27 June 2008 - 09:58 AM

hihi vui thế nhỉ không ngờ diễn đàn của chúng ta lại đông anh em thế:tất cả mọi người đều giỏi cả em hâm mộ quá! các bác ơi bác nào có cái lisp vẽ mặt cắt đất không cho em với em đang làm xây dựng nhưng mỗi lần vẽ mặt cắt đất tự nhiên hoặ là đất đắp thì rât lâu và cảm thấy nhàm chán bác nào có thì cho em với nhé:em muốn tức là mìh chỉ cần chọn điểm đầu và điểm cuối sau đó enter là đã thể hiện đc mặt cắt đất trên đó:các bác cố giúp em với nhé em sẽ hậu tạ:

Bác hoành của chúng ta hay thật ấy:em có cô em gái xinh lắm nếu bác chưa có vợ em sẽ giới thiệu nó cho bác nhé:hehheh

Cứ chơi cho hết đời trai trẻ
rồi âm thầm lặng lẽ đạp xích


Theo mình nghĩ thì chỉ cần làm 1 dynamic block theo dạng array là được.
http://www.cadviet.c...files/dattn.dwg" target="_blank">http://www.cadviet.c...files/dattn.dwg
  • 0

#810 cuongtk2

cuongtk2

    biết vẽ ellipse

  • Members
  • PipPip
  • 59 Bài viết
Điểm đánh giá: 20 (tàm tạm)

Đã gửi 27 June 2008 - 09:59 AM

Tôi đang tự viết đoạn lisp để xem thước lỗ ban.
Trong hộp thoại có 1 edit_box, 2 nút XEM và THOÁT , muốn nhấn nút XEM nhiều lần với giá trị edit_box khác nhau mà không bị thoát ra thì phải xử lý NTN?
  • 1

#811 PhucQuan

PhucQuan

    biết zoom

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

Đã gửi 27 June 2008 - 11:50 AM

Xin trả lời 2 câu hỏi của bạn:
1. Vẫn dùng được Shift+Chuột Phải+ Chọn from trong hàm getpoint.
2. Muốn đặt style dim hiện hành sang 'kiểu nào đó' thì bạn dùng lệnh (setvar "dimstyle" "kiểu nào đó")


Chào Anh Hoanh!

Khi đặt dòng : (setvar "Dimstyle" "Dim20")
Thì khi chạy máy báo lỗi : error: AutoCAD variable setting rejected: "Dimstyle" "Dim20"

Đó là lỗi gì vậy anh và cách khắc phục.

Em up file Cad và file lisp để anh xem dùm, vì trong lisp có sử dụng chèn khối, sử dụng các layer, dim có sãn trong bản vẽ.

Thanks anh!

http://www.cadviet.com/upfiles/PhucQuan_1.lsp
http://www.cadviet.com/upfiles/Template_1.dwg

Do em không biết upload nên đã upload 2 lần, anh xoá bớt dùm em nhé! Thanks anh!
  • 0

#812 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 27 June 2008 - 12:48 PM

Tôi nghĩ nên thay

(setvar "Dimstyle" "Dim20")

bằng dòng

(command "dimstyle" "r" dim20 "")
  • 0

#813 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 27 June 2008 - 01:12 PM

Tôi đang tự viết đoạn lisp để xem thước lỗ ban.
Trong hộp thoại có 1 edit_box, 2 nút XEM và THOÁT , muốn nhấn nút XEM nhiều lần với giá trị edit_box khác nhau mà không bị thoát ra thì phải xử lý NTN?

Bạn nói rõ hơn, khi bấm XEM thì chương trình của bạn phải làm những việc gì (chẳng hạn là xem cái gì, ở đâu...)
  • 0

#814 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 27 June 2008 - 01:46 PM

Chào Anh Hoanh!

Khi đặt dòng : (setvar "Dimstyle" "Dim20")
Thì khi chạy máy báo lỗi : error: AutoCAD variable setting rejected: "Dimstyle" "Dim20"

Đó là lỗi gì vậy anh và cách khắc phục.

Em up file Cad và file lisp để anh xem dùm, vì trong lisp có sử dụng chèn khối, sử dụng các layer, dim có sãn trong bản vẽ.

Thanks anh!

Do em không biết upload nên đã upload 2 lần, anh xoá bớt dùm em nhé! Thanks anh!

Rất xin lỗi! Tôi nhầm.

Biến hệ thống dimstyle là readonly, nên chỉ dùng được cho hàm getvar. Bạn muốn gán style hiện hành, bạn dùng đoạn mã sau: (command ".dimstyle" "restore" "Dim20")
  • 1

#815 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 27 June 2008 - 01:48 PM

Tôi đang tự viết đoạn lisp để xem thước lỗ ban.
Trong hộp thoại có 1 edit_box, 2 nút XEM và THOÁT , muốn nhấn nút XEM nhiều lần với giá trị edit_box khác nhau mà không bị thoát ra thì phải xử lý NTN?

Bạn hãy tra thước lỗ ban tại đây.

Bạn có thể save as trang đó về máy để tra offline được.
  • 1

#816 cuongtk2

cuongtk2

    biết vẽ ellipse

  • Members
  • PipPip
  • 59 Bài viết
Điểm đánh giá: 20 (tàm tạm)

Đã gửi 27 June 2008 - 02:13 PM

Bạn nói rõ hơn, khi bấm XEM thì chương trình của bạn phải làm những việc gì (chẳng hạn là xem cái gì, ở đâu...)

SSQ giúp mình sửa lại cái lisp này đi, mình chỉ mới viết cho thước 52 thôi
http://www.cadviet.c...files/loban.lsp
%5burl%5d
" target="_blank">
http://www.cadviet.c...files/loban.lsp


http://www.cadviet.c...loban.dcl<br />
  • 0

#817 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 27 June 2008 - 05:17 PM

SSQ giúp mình sửa lại cái lisp này đi, mình chỉ mới viết cho thước 52 thôi

Lisp đã sửa:


;;;----------------------------------------------------
(defun tralb()
(setq
L1 (atof (get_tile "L1"))
L1 (rem L1 522) ;;;rem la phep chia lay phan du
so (fix (/ L1 (/ 522 8)))
kq (nth so cungchinh)
)
(set_tile "l_text1" kq)
)
;;;----------------------------------------------------
(defun C:LB (/ cungchinh cungnho L1 so kq dcl_id)
(setq cungchinh (list "Qu\U+00fd nh\U+00E2n" "Hi\U+1EC3m h\U+1ECDa" "Thiên tai" "Thiên tài"
"Ph\U+00FAc l\U+1ED9c" "C\U+00F4 d\U+1ED9c" "Thiên t\U+1EB7c" "T\U+1EC3 t\U+01B0\U+1EDBng"))
(setq cungnho (list "Quyen Loc" "Tac quan" "Phat dat" "Thong minh"
"An thanh" "Hon nhan" "That hieu" "Tai hoa" "Thuong benh"))
(setq dcl_id (load_dialog "loban.dcl"))
(if (not (new_dialog "LOBAN" dcl_id)) (exit))
(set_tile "L1" "800")
(action_tile "see" "(tralb)")
(action_tile "close" "(done_dialog)")
(start_dialog) (unload_dialog dcl_id)
)
;;;----------------------------------------------------


Dcl, chỉ sửa vài chỗ (label, tên key):


dcl_settings : default_dcl_settings { audit_level = 3; }
LOBAN : dialog {
label ="Tra thuoc Lo Ban";
: column {

: edit_box { label = "Chieu dai mm"; key = "L1"; width = 20; }
: boxed_radio_column {
label = "Chon thuoc";
: radio_button {
label = "522mm Thuoc thong thuy";
key = "T1";
value = "1";
}
: radio_button {
label = "429mm Thuoc phu bi";
key = "T2";
}

}

: row {
: text { label = "Cung chinh"; }
: text { label = "Cung chinh"; key = "l_text1"; width = 28; }
}
: row {
: text { label = "Cung nho"; }
: text { label = "Cung nho"; key = "l_text2"; width = 28; }
}

: row {
: button {
label = "See";
key = "see";
width = 8;
fixed_width = true;

}
: button {
label = "Close";
is_cancel = true;
key = "cancel";
width = 8;
fixed_width = true;
}
}
}
}


Vài điểm lưu ý:
1) Bạn nên viết code thật rõ ràng bằng cách chia nhỏ nó ra thành các functions con. Nếu viết tiếp, bạn cũng nên tách các dòng code điều khiển dialog ra 1 function riêng.
2) Trong dcl, key "accept" chỉ nên dành riêng cho OK. Cái này AutoCAD đã định nghĩa rồi. Mình đã đổi nó thành "see"
3) Muốn chương trình làm việc gì khi user bấm vào nút "See", bạn cứ tống hết chúng vào function "tralb". Khi đó, dòng code điều khiển cho nút "See" chỉ thế này thôi: (action_tile "see" "(tralb)")
4) Done_dialog sẽ đóng dialog lại -> chỉ được phép hiện diện ở "close" thôi. Lỗi lần trước của bạn là ở chỗ này.
5) Bạn dùng font gì (cho các cung) mà trên máy mình không hiển thị được. Không rõ qua mấy lần save chúng có thay đổi không. Nếu bị thay đổi, bạn sửa lại nhé.
6) Mình không rành cách tính toán Lỗ Ban, nhưng qua các công thức tính của bạn, mình đã dùng hàm rem để thay thế. Rem là phép chia lấy phần dư. Ví dụ: (rem 12.34 5) -> return 2.34
  • 0

#818 ditimbantot

ditimbantot

    biết zoom

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

Đã gửi 28 June 2008 - 02:24 PM

Chào bác Hoanh hôm nọ mình có nhờ bác sửa giùm mình đoạn lisp ấy. Tại mấy hôm nay hơi bận chút ít có thời gian online mình post lên thí dụ cad để bác dễ hiểu hơn .
http://www.cadviet.c...files/banve.rar nhập đúng tọa độ XY thì chắc khó rồi , Bác có lisp nào nhập tọa độ XY trong thí dụ của mình không nhập bằng lisp ấy , bằng cách pick số ấy thanks bác nhiều Phiền bác hoài cũng hơi ngại chút hôm nào ranh tớ mời bác uống cafe :ph34r: :mellow:
  • 0

#819 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 28 June 2008 - 03:07 PM

Chào bác Hoanh hôm nọ mình có nhờ bác sửa giùm mình đoạn lisp ấy. Tại mấy hôm nay hơi bận chút ít có thời gian online mình post lên thí dụ cad để bác dễ hiểu hơn .
http://www.cadviet.com/upfiles/banve.rar nhập đúng tọa độ XY thì chắc khó rồi , Bác có lisp nào nhập tọa độ XY trong thí dụ của mình không nhập bằng lisp ấy , bằng cách pick số ấy thanks bác nhiều Phiền bác hoài cũng hơi ngại chút hôm nào ranh tớ mời bác uống cafe :ph34r: :mellow:

Tôi đã mở file banve của bạn ra nhưng vẫn chưa hiểu chính xác yêu cầu của bạn.
Có phải bạn muốn tôi viết giúp bạn 1 lisp vẽ pline, tọa độ các đỉnh pline lấy theo các giá trị text có trong bản vẽ?
  • 0

#820 ditimbantot

ditimbantot

    biết zoom

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

Đã gửi 28 June 2008 - 03:11 PM

ok chính xác đó bác
  • 0