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

#1541 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 17 August 2010 - 09:37 AM

Tôi đã sửa lại đôi chút, có thể chạy được cho các tình huống bác đưa ra.
Đầu tiên chọn POINT (vàng) tiếp theo chọn ALT, NUM, DES.
- Nếu chỉ có mỗi NUM bác cứ chọn cả 3 lần là NUM
- Nếu chỉ có NUM và ALT thì chọn đúng ALT và NUM còn khi hỏi DES bác cứ chọn bất kỳ cái nào cũng được
- Nếu chỉ có NUM và DES thì chọn ALT là cái nào cũng được nhưng phải chọn NUM và DES cho đúng.
Việc chọn những giá trị trên chỉ nhằm mục đích xác định vị trí của các giá trị đó so với POINT thôi còn khi chạy chính thức nó chỉ quan tâm đến các TEXT đó nằm trên lớp nào để chèn BLOCK tương ứng.
  • 1

#1542 tnmtpc

tnmtpc

    biết dimcontinue

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

Đã gửi 17 August 2010 - 10:11 AM

Tôi đã sửa lại đôi chút, có thể chạy được cho các tình huống bác đưa ra.
Đầu tiên chọn POINT (vàng) tiếp theo chọn ALT, NUM, DES.
- Nếu chỉ có mỗi NUM bác cứ chọn cả 3 lần là NUM
- Nếu chỉ có NUM và ALT thì chọn đúng ALT và NUM còn khi hỏi DES bác cứ chọn bất kỳ cái nào cũng được
- Nếu chỉ có NUM và DES thì chọn ALT là cái nào cũng được nhưng phải chọn NUM và DES cho đúng.
Việc chọn những giá trị trên chỉ nhằm mục đích xác định vị trí của các giá trị đó so với POINT thôi còn khi chạy chính thức nó chỉ quan tâm đến các TEXT đó nằm trên lớp nào để chèn BLOCK tương ứng.

trục trặc rồi hoa35ktxd ơi: sau khi chọn xong, chương trình chạy rẹc rẹc nhìn dòng lệnh thấy đã mắt lắm nhưng cuối cùng chỉ có các point trên màn hình, còn các thứ khác mất tiêu
  • 0

#1543 ksor_phong

ksor_phong

    biết vẽ circle

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

Đã gửi 17 August 2010 - 11:12 AM

Chào các bác cao thủ CAD
Em làm việc trong một cơ quan nhà nước quản lý về xây dựng, em rất hay gặp phải các file hiện trạng lớn (20-100MB) trong đó có rất nhiều block, các block này được tạo trên nhiều layer và đặt nhiều kiểu màu sắc khác nhau By nọ, By kia... Bác nào xửu lý giúp em được theo nội dung này thì em biết ơn lắm lắm (em đã xớt nhiều diễn đàn có hỏi câu này nhưng chưa có chỗ nào trả lời):
- Chuyển toàn bộ các đối tượng về 1 layer, bao gồm cả block mà không phải Explode.
- Đổi màu bylayer toàn bộ các block ( có cả block trong block ) mà không phải Explode.
Xin cám ơn và chúc các bác sức khoẻ và sự say mê.
  • 0

#1544 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 17 August 2010 - 11:49 AM

Cám ơn Phamthanhbinh, hoa35ktxd . cả hai lisp đều hoạt động tốt, lúc đầu mình chạy lisp của Phamthanhbinh lại bị xuất hiện hộp thoại và bắt nhập giá trị các thuộc tính, sau đó chạy lisp của hoa35ktxd thì ổn và chạy lại lisp của Phamthanhbinh (lúc này đã thiết lập ATTDIA về 0) kết quả như ý. Tuy nhiên cả hai lisp còn một chút xíu lỗi là trong trường hợp bản vẽ không có mô tả (DES) thì không lấy gì để chọn, nếu Enter thì không cho kết quả chuyển đổi block. Đây là trường hợp sẽ gặp, thường thì file dữ liệu khi nhập khẩu điểm vào Cad bắt buột phải có là tên điểm(NUM), điểm chèn (POINT), còn các thuộc tính khác như độ cao (ALT) chỉ có trong bản vẽ địa hình, địa chính thì không, mô tả điểm (DES) có thể có hoặc không. Hai lisp trên áp dụng tốt cho trường hợp của mình, ở đây mình muốn lisp áp dụng phổ biến cho nhiều trường hợp, do vậy các bạn có thể chỉnh sửa lại những thuộc tính nào không có (ALT hoặc DES) thì trả lời tại dòng nhắc lệnh là Enter, các thuộc tính nào có thì chuyển block bình thường.
Lần nữa cám ơn các bạn

Chào bác tnmtpc,
Bác chạy thử cái lisp đã bổ sung này nhé. Hy vọng giải quyết được các vấn đề bác đã nêu.
Khi lisp yêu cầu bác chọn đối tượng cao độ, tên điểm, hay mô tả điểm, nếu trên bản vẽ không có các đối tượng này hoặc bác không muốn chọn chúng thì bác chỉ cần nhấn Enter để bỏ qua việc chọn và lisp sẽ tiếp tục chạy cho đến cuối cùng.

(defun c:atbl (/ en els ln st ht gt pt txt cl at1 at2 at3 n i )
(command "undo" "be")
(setq cl (getvar "clayer"))
(setq CMD (getvar "CMDECHO")
OSM (getvar "OSMODE")
ATT (Getvar "ATTDIA")
ATR (getvar "ATTREQ")
)
(setvar "CMDECHO" 0)
(setvar "OSMODE" 0)
(setvar "ATTDIA" 0)
(setvar "ATTREQ" 1)
(if (= (tblsearch "block" "fpt_alt1") nil)
(progn
(setq en (car(entsel "\n Chon doi tuong cao do")))
(if (/= en nil)
(progn
(setq els (entget en)
ln (cdr (assoc 8 els))
st (cdr (assoc 7 els))
ht (cdr (assoc 40 els))
gt (cdr (assoc 50 els))
pt (cdr (assoc 10 els))
txt (cdr(assoc 1 els))
)
(command "layer" "s" ln "")
(command "attdef" "v" "" "fpt_alt" "" txt "s" st pt ht gt)
(setq at1 (entlast))
(command "block" "FPT_ALT1" pt at1 "" )))))
(if (= (tblsearch "block" "fpt_num1") nil)
(progn
(setq en (car(entsel "\n Chon doi tuong ten diem")))
(if (/= en nil)
(progn
(setq els (entget en)
ln (cdr (assoc 8 els))
st (cdr (assoc 7 els))
ht (cdr (assoc 40 els))
gt (cdr (assoc 50 els))
pt (cdr (assoc 10 els))
txt (cdr(assoc 1 els))
)
(command "layer" "s" ln "")
(command "attdef" "v" "" "fpt_num" "" txt "s" st pt ht gt)
(setq at2 (entlast))
(command "block" "FPT_NUM1" pt at2 "" )))))
(if (= (tblsearch "block" "fpt_des1") nil)
(progn
(setq en (car(entsel "\n Chon doi tuong mo ta diem")))
(if (/= en nil)
(progn
(setq els (entget en)
ln (cdr (assoc 8 els))
st (cdr (assoc 7 els))
ht (cdr (assoc 40 els))
gt (cdr (assoc 50 els))
pt (cdr (assoc 10 els))
txt (cdr(assoc 1 els))
)
(command "layer" "s" ln "")
(command "attdef" "v" "" "fpt_des" "" txt "s" st pt ht gt)
(setq at3 (entlast))
(command "block" "FPT_DES1" pt at3 "" )))))
(command "layer" "s" cl "")
(alert "\n Chon cac doi tuong can thay the")
(setq ss (ssget '((0 . "TEXT")))
n (sslength ss)
i 0)
(while (< i n)
(setq en (ssname ss i)
els (entget en)
ln (cdr (assoc 8 els))
st (cdr (assoc 7 els))
ht (cdr (assoc 40 els))
gt (cdr (assoc 50 els))
pt (cdr (assoc 10 els))
txt (cdr(assoc 1 els))
)
(if (and (= ln "ELEVATIONS") (/= (tblsearch "block" "fpt_alt1") nil))
(progn
(command "erase" en "")
(command "insert" "FPT_ALT1" pt "" "" "" txt "")))
(if (and (= ln "NUMBERS") (/= (tblsearch "block" "fpt_num1") nil))
(progn
(command "erase" en "")
(command "insert" "FPT_NUM1" pt "" "" "" txt "")))
(if (and (= ln "DESCRIPTION") (/= (tblsearch "block" "fpt_des1") nil))
(progn
(command "erase" en "")
(command "insert" "FPT_DES1" pt "" "" "" txt "")))
(setq i (1+ i))
)
(setvar "CMDECHO" CMD)
(setvar "OSMODE" OSM)
(setvar "ATTDIA" ATT)
(setvar "ATTREQ" ATR)
(command "undo" "e")
(princ)
)

Chúc bác vui...

Bài post đã được sửa bởi Phạm Thanh Bình ngày 17/8/2010 theo sự góp ý của bác Tue_NV
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1545 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 17 August 2010 - 02:09 PM

trục trặc rồi hoa35ktxd ơi: sau khi chọn xong, chương trình chạy rẹc rẹc nhìn dòng lệnh thấy đã mắt lắm nhưng cuối cùng chỉ có các point trên màn hình, còn các thứ khác mất tiêu

Chào bác tnmtpc,
Bác thử kiểm tra lại mấy cái block fpt_alt, FPT_NUM, fpt_des của bác xem sao. Lisp của bác hoa35ktxd không tạo block mới mà chỉ insert các block cũ của bác vào bản vẽ mà thôi. Có nhẽ mấy cái block của bác có vấn đề gì đó bác ạ....
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1546 tnmtpc

tnmtpc

    biết dimcontinue

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

Đã gửi 17 August 2010 - 03:47 PM

Chào bác tnmtpc,
Bác chạy thử cái lisp đã bổ sung này nhé. Hy vọng giải quyết được các vấn đề bác đã nêu.
Khi lisp yêu cầu bác chọn đối tượng cao độ, tên điểm, hay mô tả điểm, nếu trên bản vẽ không có các đối tượng này hoặc bác không muốn chọn chúng thì bác chỉ cần nhấn Enter để bỏ qua việc chọn và lisp sẽ tiếp tục chạy cho đến cuối cùng.


(defun c:atbl (/ en els ln st ht gt pt txt cl at1 at2 at3 n i )
(command "undo" "be")
(setq cl (getvar "clayer"))
(setq CMD (getvar "CMDECHO")
OSM (getvar "OSMODE")
ATT (Getvar "ATTDIA")
)
(setvar "CMDECHO" 0)
(setvar "OSMODE" 0)
(setvar "ATTDIA" 0)
(if (= (tblsearch "block" "fpt_alt1") nil)
(progn
(setq en (car(entsel "\n Chon doi tuong cao do")))
(if (/= en nil)
(progn
(setq els (entget en)
ln (cdr (assoc 8 els))
st (cdr (assoc 7 els))
ht (cdr (assoc 40 els))
gt (cdr (assoc 50 els))
pt (cdr (assoc 10 els))
txt (cdr(assoc 1 els))
)
(command "layer" "s" ln "")
(command "attdef" "v" "" "fpt_alt" "" txt "s" st pt ht gt)
(setq at1 (entlast))
(command "block" "FPT_ALT1" pt at1 "" )))))
(if (= (tblsearch "block" "fpt_num1") nil)
(progn
(setq en (car(entsel "\n Chon doi tuong ten diem")))
(if (/= en nil)
(progn
(setq els (entget en)
ln (cdr (assoc 8 els))
st (cdr (assoc 7 els))
ht (cdr (assoc 40 els))
gt (cdr (assoc 50 els))
pt (cdr (assoc 10 els))
txt (cdr(assoc 1 els))
)
(command "layer" "s" ln "")
(command "attdef" "v" "" "fpt_num" "" txt "s" st pt ht gt)
(setq at2 (entlast))
(command "block" "FPT_NUM1" pt at2 "" )))))
(if (= (tblsearch "block" "fpt_des1") nil)
(progn
(setq en (car(entsel "\n Chon doi tuong mo ta diem")))
(if (/= en nil)
(progn
(setq els (entget en)
ln (cdr (assoc 8 els))
st (cdr (assoc 7 els))
ht (cdr (assoc 40 els))
gt (cdr (assoc 50 els))
pt (cdr (assoc 10 els))
txt (cdr(assoc 1 els))
)
(command "layer" "s" ln "")
(command "attdef" "v" "" "fpt_des" "" txt "s" st pt ht gt)
(setq at3 (entlast))
(command "block" "FPT_DES1" pt at3 "" )))))
(command "layer" "s" cl "")
(alert "\n Chon cac doi tuong can thay the")
(setq ss (ssget '((0 . "TEXT")))
n (sslength ss)
i 0)
(while (< i n)
(setq en (ssname ss i)
els (entget en)
ln (cdr (assoc 8 els))
st (cdr (assoc 7 els))
ht (cdr (assoc 40 els))
gt (cdr (assoc 50 els))
pt (cdr (assoc 10 els))
txt (cdr(assoc 1 els))
)
(if (and (= ln "ELEVATIONS") (/= (tblsearch "block" "fpt_alt1") nil))
(progn
(command "erase" en "")
(command "insert" "FPT_ALT1" pt "" "" "" txt "")))
(if (and (= ln "NUMBERS") (/= (tblsearch "block" "fpt_num1") nil))
(progn
(command "erase" en "")
(command "insert" "FPT_NUM1" pt "" "" "" txt "")))
(if (and (= ln "DESCRIPTION") (/= (tblsearch "block" "fpt_des1") nil))
(progn
(command "erase" en "")
(command "insert" "FPT_DES1" pt "" "" "" txt "")))
(setq i (1+ i))
)
(setvar "CMDECHO" CMD)
(setvar "OSMODE" OSM)
(setvar "ATTDIA" ATT)
(command "undo" "e")
(princ)
)

Chúc bác vui...

Phamthanhbinh xem lại giúp : sau khi chọn các đối tượng theo yêu cầu của lisp, tất cả các block thông tin của mỗi điểm đều có giá trị y chang, ví dụ ban đầu chọn điểm 4 có cao độ là 3.83 thì kết quả tất cả các điểm đều có ATL là 3.83, NUM là 4. Đối với DES cũng vậy. Làm phiền các bạn nhiều quá
  • 0

#1547 tnmtpc

tnmtpc

    biết dimcontinue

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

Đã gửi 17 August 2010 - 04:02 PM

Chào bác tnmtpc,
Bác thử kiểm tra lại mấy cái block fpt_alt, FPT_NUM, fpt_des của bác xem sao. Lisp của bác hoa35ktxd không tạo block mới mà chỉ insert các block cũ của bác vào bản vẽ mà thôi. Có nhẽ mấy cái block của bác có vấn đề gì đó bác ạ....

Thế thì chưa trúng ý mình rồi. Bản vẽ nguồn của mình (bản vẽ chỉ có đối tượng text) đã up đâu có chứa block bliết gì đâu, yêu cầu lisp chuyển toàn bộ các text thành block, các bạn xem lại giúp đi
  • 0

#1548 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 17 August 2010 - 04:10 PM

Trong bản vẽ nxyzc_5 của bác Up lên đã có sẵn các Block tuy bác chưa chèn ra ngoài nhưng đã nằm trong data của file rồi.
Đoạn mã của tôi test thử trên file của bác chạy ngon lành.
Bác phải nhớ chọn đối tượng theo đúng thứ tự.
Đầu tiên phải chọn điểm chèn POINT (vàng) trước sau đó mới chọn đến các cái khác.
Nếu trong bản vẽ của bác chỉ có NUM không thì làm như sau:
- CHọn POINT (Vàng) sau đó click 3 lần vào NUM (Xanh)
Nếu trong bản vẽ chỉ có NUM và ALT thì làm như sau:
- CHọn POINT (Vàng) sau đó chọn ALT (Đỏ trên) rồi chọn NUM (xanh) lần cuối cùng chọn cái nào cũng được.
Nếu trong bản vẽ có NUM và DES thì làm như sau
- CHọn POINT (Vàng), chọn cái nào cũng được, chọn NUM (xanh), chọn DES (đỏ dưới)
Nếu có đủ cả 3 thì làm như sau
- CHọn POINT (Vàng), chọn ALT (đỏ trên), chọn NUM (xanh), chọn DES (đỏ dưới)
  • 0

#1549 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 17 August 2010 - 04:10 PM

Chào các bác cao thủ CAD
Em làm việc trong một cơ quan nhà nước quản lý về xây dựng, em rất hay gặp phải các file hiện trạng lớn (20-100MB) trong đó có rất nhiều block, các block này được tạo trên nhiều layer và đặt nhiều kiểu màu sắc khác nhau By nọ, By kia... Bác nào xửu lý giúp em được theo nội dung này thì em biết ơn lắm lắm (em đã xớt nhiều diễn đàn có hỏi câu này nhưng chưa có chỗ nào trả lời):
- Chuyển toàn bộ các đối tượng về 1 layer, bao gồm cả block mà không phải Explode.
- Đổi màu bylayer toàn bộ các block ( có cả block trong block ) mà không phải Explode.
Xin cám ơn và chúc các bác sức khoẻ và sự say mê.

Chào bạn Ksor Phong,
Thật tình chưa hiểu bạn muốn gì???? Bạn cần hiểu kỹ hơn vể đối tượng Block. Nếu bạn không cho explore block thì làm sao để chỉnh sửa nó được nhỉ??? Vì sao bạn lại cần làm như vậy??? Nếu phá nó ra chỉnh sửa xong rồi block lại có được không (tất nhiên là lúc này bạn phải tạo thêm block mới trên bản vẽ của bạn nếu như bạn không muốn mất đi block nguyên thủy của nó) ???
Cái ý lấy màu Bylayer của bạn là theo layer nào??? Layer mà block được đưa vào hay layer của các đối tượng có trong block??? Bạn nên nhớ rằng một block có thể được đưa vào nhiều layer khác nhau nhưng màu của các đối tượng có trong block không hề thay đổi gì cho dù mỗi layer có một màu khác nhau. Vậy nên bạn cần xác định rõ mới có thể xử lý được 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.

#1550 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 17 August 2010 - 04:15 PM

@ksor_phong: Tôi chưa thử Edit layer trong Block nhưng có lẽ sẽ làm được. Vấn đề là bạn hãy gửi lên đây 1 bản vẽ có chứa vài cái Block (nho nhỏ thôi ngại download những file lớn lắm)
Hy vọng sẽ làm được.
  • 0

#1551 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 17 August 2010 - 04:28 PM

Phamthanhbinh xem lại giúp : sau khi chọn các đối tượng theo yêu cầu của lisp, tất cả các block thông tin của mỗi điểm đều có giá trị y chang, ví dụ ban đầu chọn điểm 4 có cao độ là 3.83 thì kết quả tất cả các điểm đều có ATL là 3.83, NUM là 4. Đối với DES cũng vậy. Làm phiền các bạn nhiều quá

Chào bác tnmtpc,
Mình chưa hiểu cái lỗi của bác là do đâu nhưng đây là cái mình đã chạy trên file bác gửi, nó hoàn toàn không bị vấn đề như bác nói, bác kiểm tra lại nhé.
http://www.mediafire...794/nxyzc_5.dwg
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1552 tnmtpc

tnmtpc

    biết dimcontinue

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

Đã gửi 17 August 2010 - 04:31 PM

Trong bản vẽ nxyzc_5 của bác Up lên đã có sẵn các Block tuy bác chưa chèn ra ngoài nhưng đã nằm trong data của file rồi.
Đoạn mã của tôi test thử trên file của bác chạy ngon lành.
Bác phải nhớ chọn đối tượng theo đúng thứ tự.
Đầu tiên phải chọn điểm chèn POINT (vàng) trước sau đó mới chọn đến các cái khác.
Nếu trong bản vẽ của bác chỉ có NUM không thì làm như sau:
- CHọn POINT (Vàng) sau đó click 3 lần vào NUM (Xanh)
Nếu trong bản vẽ chỉ có NUM và ALT thì làm như sau:
- CHọn POINT (Vàng) sau đó chọn ALT (Đỏ trên) rồi chọn NUM (xanh) lần cuối cùng chọn cái nào cũng được.
Nếu trong bản vẽ có NUM và DES thì làm như sau
- CHọn POINT (Vàng), chọn cái nào cũng được, chọn NUM (xanh), chọn DES (đỏ dưới)
Nếu có đủ cả 3 thì làm như sau
- CHọn POINT (Vàng), chọn ALT (đỏ trên), chọn NUM (xanh), chọn DES (đỏ dưới)

Mình đã down ngược file nxyzc_5 về máy, và chạy lisp bị lỗi như thế mà, chỉ còn lại các point thôi. hoa35ktxd xem lại giúp và xem như bản vẽ nguồn không có sẵn các block.
  • 0

#1553 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 17 August 2010 - 04:46 PM

Chào bạn Ksor Phong,
Thật tình chưa hiểu bạn muốn gì???? Bạn cần hiểu kỹ hơn vể đối tượng Block. Nếu bạn không cho explore block thì làm sao để chỉnh sửa nó được nhỉ??? Vì sao bạn lại cần làm như vậy??? Nếu phá nó ra chỉnh sửa xong rồi block lại có được không (tất nhiên là lúc này bạn phải tạo thêm block mới trên bản vẽ của bạn nếu như bạn không muốn mất đi block nguyên thủy của nó) ???
Cái ý lấy màu Bylayer của bạn là theo layer nào??? Layer mà block được đưa vào hay layer của các đối tượng có trong block??? Bạn nên nhớ rằng một block có thể được đưa vào nhiều layer khác nhau nhưng màu của các đối tượng có trong block không hề thay đổi gì cho dù mỗi layer có một màu khác nhau. Vậy nên bạn cần xác định rõ mới có thể xử lý được bạn ạ......
Chúc bạn vui,...

Trong Express có lệnh XLIST có thể truy cập các thuộc tính của 1 đối tượng trong block nên việc này chắc là được. Nhưng block trong block thì lệnh XLIST chưa đáp ứng đc.
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#1554 tnmtpc

tnmtpc

    biết dimcontinue

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

Đã gửi 17 August 2010 - 04:50 PM

Chào bác tnmtpc,
Mình chưa hiểu cái lỗi của bác là do đâu nhưng đây là cái mình đã chạy trên file bác gửi, nó hoàn toàn không bị vấn đề như bác nói, bác kiểm tra lại nhé.
http://www.mediafire...794/nxyzc_5.dwg

Đây là kết quả mình đã thực hiện:

http://www.mediafire...lbgasen56h9j16n
  • 0

#1555 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 17 August 2010 - 04:51 PM

Mình đã down ngược file nxyzc_5 về máy, và chạy lisp bị lỗi như thế mà, chỉ còn lại các point thôi. hoa35ktxd xem lại giúp và xem như bản vẽ nguồn không có sẵn các block.

Thế thì chịu rồi, chắc máy của bác có thiết lập gì đó đặc biệt ngoài tầm dự đoán của tôi.
Và tôi thấy rất vô lý vì trước đó bác đã chạy được rồi, bây giờ lại không được.
Có lẽ bác thao tác không đúng như tôi hướng dẫn. Nếu bác hiểu về LISP thì sẽ biết được nguyên lý làm việc của đoạn mã trên.
  • 0

#1556 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 17 August 2010 - 05:14 PM

Thế thì chịu rồi, chắc máy của bác có thiết lập gì đó đặc biệt ngoài tầm dự đoán của tôi.
Và tôi thấy rất vô lý vì trước đó bác đã chạy được rồi, bây giờ lại không được.
Có lẽ bác thao tác không đúng như tôi hướng dẫn. Nếu bác hiểu về LISP thì sẽ biết được nguyên lý làm việc của đoạn mã trên.

Do Bản vẽ của bạn tnmtpc thiết lập biến Attreq = 0 -> nên Lisp thực hiện lệnh Insert bị lỗi. (không chèn được cái Block) mà lại xóa cái Text nên bản vẽ của bác tnmtpc bị "mất tiêu" như bác đã thấy
@ tnmtpc : Trước khi chạy Lisp, bác thiết lập biến Attreq = 1 là OK ngay

Command: attreq
Enter new value for ATTREQ <0>: 1

@hoa35ktxd : Khi viết Lisp, bác nên lường trước các tình huống có thể xảy ra, nên thiết lập biến AttReq vào trong Líp cho chắc, bác ạ :D .
  • 3

#1557 tnmtpc

tnmtpc

    biết dimcontinue

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

Đã gửi 17 August 2010 - 05:35 PM

Do Bản vẽ của bạn tnmtpc thiết lập biến Attreq = 0 -> nên Lisp thực hiện lệnh Insert bị lỗi. (không chèn được cái Block) mà lại xóa cái Text nên bản vẽ của bác tnmtpc bị "mất tiêu" như bác đã thấy
@ tnmtpc : Trước khi chạy Lisp, bác thiết lập biến Attreq = 1 là OK ngay

Command: attreq
Enter new value for ATTREQ <0>: 1

@hoa35ktxd : Khi viết Lisp, bác nên lường trước các tình huống có thể xảy ra, nên thiết lập biến AttReq vào trong Líp cho chắc, bác ạ :D .

Chính xác 1000% luôn, sau khi thiết lập biến ATTREQ <0>: 1 thì cả hai lisp của PhamThanhbinh và hoa35ktxd đều hoạt động như ý. Các bạn thông cảm cho mình nhé vì mình biết lisp sơ sơ thôi, nói đến biến thì cũng mù tịt.
Đưa giúp luôn cái vụ thiết lập biến vào lisp luôn thể để người khác khỏi gặp sự cố như mình
Cám ơn tất cả mọi người
  • 0

#1558 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 17 August 2010 - 09:54 PM

Do Bản vẽ của bạn tnmtpc thiết lập biến Attreq = 0 -> nên Lisp thực hiện lệnh Insert bị lỗi. (không chèn được cái Block) mà lại xóa cái Text nên bản vẽ của bác tnmtpc bị "mất tiêu" như bác đã thấy
@ tnmtpc : Trước khi chạy Lisp, bác thiết lập biến Attreq = 1 là OK ngay

Command: attreq
Enter new value for ATTREQ <0>: 1

@hoa35ktxd : Khi viết Lisp, bác nên lường trước các tình huống có thể xảy ra, nên thiết lập biến AttReq vào trong Líp cho chắc, bác ạ :D .

Cám ơn bác Tue_NV nhé vì mình cũng không để ý tới cái biến hệ thống này, khi bác nhắc, đọc lại Help mới thấy như sau:

ATTREQ System Variable
Concepts Procedures Reference

Type: Integer
Saved in: Registry
Initial value: 1

Determines whether the INSERT command uses default attribute settings during insertion of blocks.

0 Assumes the defaults for the values of all attributes

1 Turns on prompts or dialog box for attribute values, as specified by ATTDIA


Mình đã bổ sung việc thiết lập lại biến này trong đoạn lisp post ở trên. Âu cũng là một bài học cho những người viết lisp.

@tnmtpc: Bác đọc chỗ đánh dấu đỏ ở trên sẽ hiểu lý do vì sao mà khi bác chạy lisp nó bị như vậy.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1559 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 17 August 2010 - 11:07 PM

@ tnmtpc: Thật lòng tôi thấy quá thất vọng với bác qua những bài viết vừa rồi. Mặc dù đã được bác TUE_NV nhắc nhở và tôi đã giải thích vậy mà vẫn còn thắc mắc. Thú thực khi nhìn thấy số lượng bài viết của bác tôi nghĩ bác đã kinh qua 1 chút kinh nghiệm nhất là khi bác nói: "Không ai quan tâm à" hay đại loại như thế thì tôi mới thấy chạnh lòng.
Qua việc này tôi thấy bác chưa biết trân trọng những gì người khác đã quan tâm giúp bác cho dù rất nhỏ mà bác chỉ muốn đòi hỏi chứ bác chưa chịu tư duy.
Thân.
  • 0

#1560 tnmtpc

tnmtpc

    biết dimcontinue

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

Đã gửi 18 August 2010 - 07:13 AM

@ tnmtpc: Thật lòng tôi thấy quá thất vọng với bác qua những bài viết vừa rồi. Mặc dù đã được bác TUE_NV nhắc nhở và tôi đã giải thích vậy mà vẫn còn thắc mắc. Thú thực khi nhìn thấy số lượng bài viết của bác tôi nghĩ bác đã kinh qua 1 chút kinh nghiệm nhất là khi bác nói: "Không ai quan tâm à" hay đại loại như thế thì tôi mới thấy chạnh lòng.
Qua việc này tôi thấy bác chưa biết trân trọng những gì người khác đã quan tâm giúp bác cho dù rất nhỏ mà bác chỉ muốn đòi hỏi chứ bác chưa chịu tư duy.
Thân.

Đừng giận Bác ạ!. Nếu mình "kinh qua" thì mình có làm phiền các Bác làm gì. Thật lòng khi các Bác giúp mình phấn khởi lắm nhưng khi down lisp về chạy không đúng ý, mình không biết làm sao, đành phải làm phiền các bạn nhiều lần. Thành thật xin lỗi bạn vì đã làm phiền và chân thành cám ơn bạn nhiều vì sự giúp đỡ
  • 1