Đến nội dung


Hình ảnh
- - - - -

Chỉnh sửa lisp đã có ???


  • Please log in to reply
9 replies to this topic

#1 Cuti

Cuti

    biết zoom

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

Đã gửi 26 August 2008 - 02:32 PM

Tình hình là em mới được nhận nhiệm vụ mới, từ bình đồ cao độ tự nhiên và bình đồ cao độ sau nạo vét để lên mặt cắt và tính toán khối lượng đã nạo vét.
Trong khi loay hoay mãi không biết tính thế nào thì có thằng bạn em nó cho em mấy file lisp để có thể tự lên mặt cắt bằng cách nhập số liệu vào file *.txt
rồi từ đó vào cad load lisp lên sau đó dẫn đến đường dẫn chứa file *.txt đó chương trình sẽ tự chạy được mặt cắt.

Hình đã gửi
Đây là những file lisp nằm trong một folder, khi load sẽ phải laod tất cả các file trên

HC
MC58
30
98
-8
4
4
-4
-9
0.2
2
-4.8 0 0 -4.7 0 0
-4.7 10 10 -4.9 17 17
-5.1 10 20 -7.5 10 27
-7.2 10 30 -8.1 10 37
-7.6 10 40 -7.9 10 47
-7.9 10 50 -8.1 10 57
-7.5 10 60 -8.2 10 67
-7 10 70 -8.1 10 77
-6.5 10 80 -8 10 87
-7.7 10 90 -7 10 97
-7.4 10 100 -8 10 107
-5.1 10 110 -7.9 10 117
-5.1 10 120 -4.9 10 127
-5 10 130 -5 10 137

Đây là file *.txt mà em dùng để chạy lên mặt cắt phía dưới


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

Đây là hình ảnh một file em đã chạy thử bằng lệnh CAL1

Có vấn đề là thằng bạn em nó cũng chỉ là thằng tiếp nhận lại vấn đề, nó cũng chỉ biết các thao tác làm chứ còn về bản chất của vấn đề thì nó lại không hiểu, trong khi đó em cũng là thằng mới biết thế nào là cad vì thế em chưa biêt một chút gì về vấn đề lisp ngoài cái thao tác mà thằng bạn em nó đã dậy em, em cũng làm đi làm lại theo một thói quen còn bản chất vấn đề em không hề hiểu một chút nào cả. Vậy có cách nào khi mở file lisp đó ra mình có thể đọc được phần nào nội dung trong lisp đó viết gì ? mục đích lisp làm gì ? mã lệnh ra sao ? muốn chỉnh sửa như thế nào ?....? Mong các Bác chỉ giáo giúp em ạh !!!
Sau khi làm xong các mặt cắt em phải xác định được diện tích mặt cắt rồi từ đó sẽ tính ra được khối lượng đã thực hiện. Nhưng vấn đề là trên những mặt cắt đó lisp đã tự tính khối lượng nhưng khi kiểm tra lại em thấy có khá nhiều mặt cắt sai về diện tích, bây giờ lại phải ngồi pick lại từng mặt cắt một => Các bác có thể xem xét và sửa giúp em được không ạh ?!
Trên các mặt cắt đã được chia thành các đường với các ký hiện và màu khác nhau, nhưng tiếc là tất cả lại đều nằm trong một layer, các Bác có thể xem xét và giúp em làm cách nào để có thể sửa lisp sao cho mỗi màu, mỗi đường trong layer đó thành các layer riêng biệt được không ạh ?!

@: Em gửi các Bác file lisp bao gồm các lisp và file txt mặt cắt. Mong các Bác xem xét và giúp đỡ em ạh !!! Thanks all !
http://www.cadviet.c...pfiles/LISP.rar


  • 0

#2 Cuti

Cuti

    biết zoom

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

Đã gửi 26 August 2008 - 10:41 PM

Hicx! không biết em có pót nhầm chỗ không ạh ?! Có Bác nào làm ơn giúp iem với ạh !!!
  • 0

#3 vndesperados

vndesperados

    biết lệnh xref

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

Đã gửi 27 August 2008 - 07:14 AM

Hicx! không biết em có pót nhầm chỗ không ạh ?! Có Bác nào làm ơn giúp iem với ạh !!!



Không có nhiều thời gian để phân tích dữ liệu, vậy nên bạn giải thích giùm ý nghĩa của từng dòng file dữ liệu, sau đó mọi người sẽ giúp bạn file lisp
  • 0

#4 Cuti

Cuti

    biết zoom

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

Đã gửi 27 August 2008 - 09:17 AM

Không có nhiều thời gian để phân tích dữ liệu, vậy nên bạn giải thích giùm ý nghĩa của từng dòng file dữ liệu, sau đó mọi người sẽ giúp bạn file lisp

Với file *txt dữ liệu trong đó bao gồm
Tên MC,
Số Hiệu MC,
Khoảng cách đầu,
Khoảng cách đầu + bề rộng luồng,
Cao độ thiết kế,
Mái dốc,
Mái dốc,
Đỉnh Thước nước,
Đáy Thước nước,
Sai số bề rộng,
Sai số chiều sâu
Cao độ --- Khoảng Cách ---- Khoảng cách cộng dồn.


@: Vấn đề em đang cần làm làm thế nào chỉnh trong LISP sao cho những đường ký hiệu có những màu khác nhau thành những layer riêng biệt, tại vì trong LISP em gửi lên tất cả các đường đều chung một layer. VD khi em muốn đường màu đỏ đi thì tất cả các chi tiết trên bản vẽ đều bị tắt hết,
  • 0

#5 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 27 August 2008 - 09:46 AM

@: Vấn đề em đang cần làm làm thế nào chỉnh trong LISP sao cho những đường ký hiệu có những màu khác nhau thành những layer riêng biệt, tại vì trong LISP em gửi lên tất cả các đường đều chung một layer. VD khi em muốn đường màu đỏ đi thì tất cả các chi tiết trên bản vẽ đều bị tắt hết,



(Defun c:MRL ()
(princ "\nPHAM QUOC DUY Binh Son - Quang ngai")
(setq XX (ssget "x"))
(setq L 0)
(setq M (sslength XX))
(while (< L M)
(setq DT (ssname XX L))
(setq DTM (entget DT))
(setq TEXT (cdr (assoc 10 DTM)))
(setq MAUDt (cdr (assoc 62 DTM)))

(command "-layer" "new" MAUDT "color" MAUDT MAUDT "")
(command ".chprop" DT "" "la" MAUDT "COLOR" "BYLAYER" "")

(setq L (1+ L))
)

(setq nhan (* l 100))
(setq chia (/ nhan m))
(princ (strcat "\nDa chinh: <" (itoa chia) " %>"))

(Princ)
)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;


Lisp trên chuyển các đối tượng cùng màu về 1 lớp. Giải quyết tạm thời như vậy đi. Lệnh là MRL
  • 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


#6 Cuti

Cuti

    biết zoom

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

Đã gửi 28 August 2008 - 11:47 AM

Chân thành cảm ơn bác DUY !
em đã chạy thử với khoảng 100 MC, khi chạy phải đợi một lúc sau.
Nhưng khi tắt một số layer đi thì nó mất luôn một số đường dóng mà đôi khi em vẫn cần những đường dóng đó.

@: Bác làm cho em hỏi một chút ạh ! Bay giờ em muốn toàn bộ phần thước nước, phần tên bản vẽ, khung bản vẽ và những thông số dóng phía dưới sang thành màu trắng. Bác xem xét có thể giúp em trong LISP đc không ạh ?!
  • 0

#7 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 28 August 2008 - 02:41 PM

Chân thành cảm ơn bác DUY !
em đã chạy thử với khoảng 100 MC, khi chạy phải đợi một lúc sau.
Nhưng khi tắt một số layer đi thì nó mất luôn một số đường dóng mà đôi khi em vẫn cần những đường dóng đó.

@: Bác làm cho em hỏi một chút ạh ! Bay giờ em muốn toàn bộ phần thước nước, phần tên bản vẽ, khung bản vẽ và những thông số dóng phía dưới sang thành màu trắng. Bác xem xét có thể giúp em trong LISP đc không ạh ?!

Lisp thì nó vậy thôi niếu nó thấy cùng màu thì nó chuyễn về 1 layer không cần quan tâm đối tượng của bạn là cái gì.
Muốn giải quyết triệt để vấn đề của bạn thì phải sửa trong lisp của bạn mà mình thì đang bận quá bạn coi có ai giúp được không.
  • 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


#8 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 28 August 2008 - 03:32 PM

Tình hình là em mới được nhận nhiệm vụ mới, từ bình đồ cao độ tự nhiên và bình đồ cao độ sau nạo vét để lên mặt cắt và tính toán khối lượng đã nạo vét.
Trong khi loay hoay mãi không biết tính thế nào thì có thằng bạn em nó cho em mấy file lisp để có thể tự lên mặt cắt bằng cách nhập số liệu vào file *.txt
rồi từ đó vào cad load lisp lên sau đó dẫn đến đường dẫn chứa file *.txt đó chương trình sẽ tự chạy được mặt cắt.

Hình đã gửi
Đây là những file lisp nằm trong một folder, khi load sẽ phải laod tất cả các file trên


Đây là file *.txt mà em dùng để chạy lên mặt cắt phía dưới


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

Đây là hình ảnh một file em đã chạy thử bằng lệnh CAL1

Có vấn đề là thằng bạn em nó cũng chỉ là thằng tiếp nhận lại vấn đề, nó cũng chỉ biết các thao tác làm chứ còn về bản chất của vấn đề thì nó lại không hiểu, trong khi đó em cũng là thằng mới biết thế nào là cad vì thế em chưa biêt một chút gì về vấn đề lisp ngoài cái thao tác mà thằng bạn em nó đã dậy em, em cũng làm đi làm lại theo một thói quen còn bản chất vấn đề em không hề hiểu một chút nào cả. Vậy có cách nào khi mở file lisp đó ra mình có thể đọc được phần nào nội dung trong lisp đó viết gì ? mục đích lisp làm gì ? mã lệnh ra sao ? muốn chỉnh sửa như thế nào ?....? Mong các Bác chỉ giáo giúp em ạh !!!
Sau khi làm xong các mặt cắt em phải xác định được diện tích mặt cắt rồi từ đó sẽ tính ra được khối lượng đã thực hiện. Nhưng vấn đề là trên những mặt cắt đó lisp đã tự tính khối lượng nhưng khi kiểm tra lại em thấy có khá nhiều mặt cắt sai về diện tích, bây giờ lại phải ngồi pick lại từng mặt cắt một => Các bác có thể xem xét và sửa giúp em được không ạh ?!
Trên các mặt cắt đã được chia thành các đường với các ký hiện và màu khác nhau, nhưng tiếc là tất cả lại đều nằm trong một layer, các Bác có thể xem xét và giúp em làm cách nào để có thể sửa lisp sao cho mỗi màu, mỗi đường trong layer đó thành các layer riêng biệt được không ạh ?!

@: Em gửi các Bác file lisp bao gồm các lisp và file txt mặt cắt. Mong các Bác xem xét và giúp đỡ em ạh !!! Thanks all !
http://www.cadviet.c...pfiles/LISP.rar


Chào bác Cu tí, (Cutis)
Tôi cũng chỉ mới biết chút ít về lisp. Những điều bác cần theo tôi hiểu thì lisp làm được cả. Tuy nhiên để viết cho xong thì chắc tôi cũng mất khá công mà điều này thì các bác khác sẽ làm tốt hơn tôi. Tôi chỉ xin trả lời các câu hỏi của bác như sau:
1/-có cách nào khi mở file lisp đó ra mình có thể đọc được phần nào nội dung trong lisp đó viết gì ? Bác dùng trình Notepad để mở file lisp bất kỳ nào cũng được.
Đọc nó không khó nhưng để hiểu được phần nào thì chí ít bác cũng phải học qua các khái niệm cơ bản cũng như các cú pháp cơ bản sử dụng trong lisp. Thời gian học được tùy thuộc vào sự nỗ lực cũng như giới hạn kiến thức của bác.
2/- mục đích lisp làm gì ? Khi bác học xong phần trên bác sẽ tự trả lời được, nhưng có thể hiểu đơn giản là lisp giúp bác tự động thực hiện những điều bạn định tiến hành trong bản vẽ Autocad của bác.
3/- mã lệnh ra sao ? Xem câu trả lời 1.
4/-muốn chỉnh sửa như thế nào ? Bác phải thật thành thạo về lisp và phải hiểu thực sự mình muốn gì mới có thể sửa được .Vì các lisp bác có đã do những người có khả năng về lisp cao hơn bác khá nhiều viết ra, nó có những kiến thức mà có thể bác chưa biết tới, nếu bác sửa không đúng sẽ làm nó toi luôn đấy. Vì thế nếu bác định sửa lisp nào thì trước hết nên copy lisp gốc đó ra một tên khác để lưu trữ và so sánh với lisp bác sửa khi cần thiết, đồng thời trong trường hợp xấu nhất bác cũng không bị mất lisp gốc. Sau khi sửa xong nên chạy thử và tìm ra sự khác biệt trong quá trình làm việc của lisp giữa lisp gốc và lisp mới sửa. Sử dụng debug để kiểm tra từng bước chạy của lisp. Nên sửa dần từng dòng lệnh một, đừng quá tham sửa lung tung rồi chả biết là mình đã sửa cái gì nữa.

Trong lúc bác chưa thành thạo lắm về lisp phải chấp nhận việc thao tác thủ công để hoàn thành nhiệm vụ đã chứ không có xếp chửi chết. Bác có thể sử dụng lệnh Change trong Autocad để chuyển lớp cho các đối tượng trên bản vẽ, đổi màu các đối tượng tùy theo ý thích của bác. Sau đó sử dụng layer để hiển thị những điều bác muốn.

Cuối cùng nếu bác thực sự yêu thích lisp thì việc học nó không quá khó đâu. Trên diễn đàn này có rất nhiều cao thủ có thể giúp bác thành công được. Nhưng bác phải học và thực hành dần dần chứ không thể nóng vội được đâu. Kiến thức về lisp sẽ được tích lũy dần qua việc thực hành của bác.

Chúc bác thành công
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#9 vndesperados

vndesperados

    biết lệnh xref

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

Đã gửi 28 August 2008 - 04:04 PM

Máy mình không có CAD, mình sẽ hướng dẫn bạn cách chỉnh sữa lại như sau:
1. Tạo ra file CREALA như sau:
CREALA.LSP
(DEFUN CREATELAYER(laname lacolor lalt);; Tao mot layer moi (tenlayer mauyer duongnetlayer)
(if (tblsearch "LAYER" laname);; Kiem tra layer da ton tai
(princ (strcat "Layer" laname " da ton tai")
(if (tblsearch "LTYPE" ltname);if linetype exsists
(command "._Layer" "_Make" laname "_Color" lacolor laname "_LT" ltname laname "")
(command "._Layer" "_Make" laname "_Color" lacolor laname "_LT" "Continuous" laname "")
)
)
)
(DEFUN CREALA()
(CREATELAYER "TUNHIEN" "GREEN" "Continuous");Layer TUNHIEN
(CREATELAYER "THIETKE" "RED" "Continuous");Layer THIETKE
(CREATELAYER "DUONGGIONG" "YELLOW" "Continuous");Layer DUONGGIONG
(CREATELAYER "KICHTHUOC" "WHITE" "Continuous");Layer KICHTHUOC
)

Đặt chung file này vào thư mục chứ các file LISP ở trên, nhớ là LOAD cùng với các file đó khi bạn làm việc
Bạn có thể thêm layer bằng cách chỉnh sửa funtion CREALA
Sửa lại file CAL1.LSP như sau:

(defun C:CAL1 ()
(CREALA);Them function tao layer
(DRAW)
(CAL_AREA)
)

Tronng file DRAW.LSP dưới đây mình đã comment ở những nơi mà mình nghĩ là nên chỉnh sửa
http://www.cadviet.c...pfiles/DRAW.lsp

;============ block by cuongvk============
(command "LAYER" "M" "DRAW" "")
(command "COLOR" "WHITE" "")
;=======================================
;=======De nghi thay doi boi cuongvk=======
;(setvar "CLAYER" laname)
;=======================================

Phần mình đánh dấu Block là code gốc của file DRAW.LSP
Phần mình đề nghị thay đổi bạn có thể tự chỉnh sửa

Ví dụ bạn muốn đối tượng mà LISP sẽ thể hiện ra ở layer "THIETKE" thì bạn chỉnh lại đọan code mình đã đánh dấu comment như sau

;============ block by cuongvk============
;(command "LAYER" "M" "DRAW" "");;--> comment out doan code nay
;;(command "COLOR" "WHITE" "");;--> comment out doan code nay
;=======================================
;=======De nghi thay doi boi cuongvk=======
(setvar "CLAYER" "THIETKE"); --> modify lai doan code vua comment
;=======================================
Cũng không khó lắm nhỉ, chúc bạn thành công

Vì không có CAD nên mình chỉ có thể giúp được như vậy thôi
  • 0

#10 Cuti

Cuti

    biết zoom

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

Đã gửi 30 August 2008 - 12:33 PM

Lisp thì nó vậy thôi niếu nó thấy cùng màu thì nó chuyễn về 1 layer không cần quan tâm đối tượng của bạn là cái gì.
Muốn giải quyết triệt để vấn đề của bạn thì phải sửa trong lisp của bạn mà mình thì đang bận quá bạn coi có ai giúp được không.

Vâng ạh !
em đã biết cách ứng dụng lisp bác chia sẻ để cố gắng hoàn thành nhiệm vụ !
chân thành cảm ơn bác đã quan tâm và chia sẻ ! hy vọng lúc nào bác rảnh rỗi, bác mở lisp của em xem lại cấu hình giúp em !
  • 0