Đến nội dung


Hình ảnh
- - - - -

Xin lisp đánh cao độ đường ống cấp nước


  • Please log in to reply
11 replies to this topic

#1 hung1608

hung1608

    biết lệnh rotate

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

Đã gửi 25 August 2010 - 09:08 AM

Mình học ngành nước khi vẽ trên không gian phải điền cao độ đường ống và thiết bị vệ sinh khá mất thời gian khi xoay cao độ theo đường cheo và đường thẳng. http://www.cadviet.c...es/3/cao_do.dwg. Nhờ các cao thủ về lisp giúp mình . Cảm ơn các bạn.
Nhờ các cao thủ về lisp giúp mình . Cảm ơn các bạn
  • 0

#2 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 25 August 2010 - 10:21 AM

Bạn dùng thử nhé:
(defun c:caodo()
(setq ATT (getvar "ATTDIA"))
(setq OSM (Getvar "OSMODE"))
(setvar "ATTDIA" 0)
(setq Pt1 (getpoint "\nChon diem chen cao do: ")
Pt2 (getpoint "\nChon diem thu hai nam tren tuyen: ")
CaoDo (getstring "\nNhap cao do: ")
KhoangCach (getreal "\nNhap khoang cach: ")
UpDown (getstring "\nCo lat nguoc khong (nhap ky tu bat ky de lat): ")
TyLe(getreal "\nNhap ty le chen: ")
Ang (angle Pt2 Pt1)
Pt (polar Pt1 Ang KhoangCach))
(setvar "OSMODE" 0)
(if (or (< Ang (/ pi 2)) (> Ang (* 3 (/ pi 2))))
(if (= UpDown "")
(command "insert" "CaoDoR" Pt TYLe TYLe (* (/ Ang pi) 180) Caodo)
(command "insert" "CaoDoRUD" Pt TYLe TYLe (* (/ Ang pi) 180) Caodo)
)
(if (= UpDown "")
(command "insert" "CaoDoL" Pt TYLe TYLe (* (/ (- Ang pi) pi) 180) Caodo)
(command "insert" "CaoDoLUD" Pt TYLe TYLe (* (/ (- Ang pi) pi) 180) Caodo)
)
)
(setvar "ATTDIA" ATT)
(setvar "OSMODE" OSM)
)
Quên béng mất, vội đi ăn cơm:
Trong bản vẽ bạn cần tạo 2 Block có thuộc tính để ghi cao độ giống y như cái ký hiệu cao độ cảu ban trong đó thuộc tính cảu Block dùng để ghi cao độ
2 Block đó có tên là CaoDoR (Phải) và CaoDoL(Trái)
Chương trình sẽ căn cứ vào 2 điểm chọn để xác định góc nghiêng của tuyến đồng thời sẽ tính toán chiều nghiêng để chèn Block (trái phải) nhìn cho giống như DIM tránh trường hợp phải xoay ngược màn hình mới đọc được.
- Kích cỡ của ký hiệu sẽ phụ thuộc vào tham số tỷ lệ chèn, bạn hãy điều chỉnh tỷ lệ này cho phù hợp với yêu cầu.
  • 1

#3 hung1608

hung1608

    biết lệnh rotate

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

Đã gửi 25 August 2010 - 11:44 AM

Bạn ơi minh thư dùng rồi nhưng không được. Khi dùng lệnh xong thì nó bị thế này nhè:

Command: caodo
Chon diem chen cao do:
Chon diem thu hai nam tren tuyen:
Nhap cao do: 2
"CaoDoL.dwg": Can't find file in search path:
C:\Documents and Settings\User\My Documents\ (current directory)
C:\Documents and Settings\User\Application Data\Autodesk\AutoCAD
2008\R17.1\enu\support\
C:\Program Files\AutoCAD 2008\support\
C:\Program Files\AutoCAD 2008\fonts\
C:\Program Files\AutoCAD 2008\help\
C:\Program Files\AutoCAD 2008\express\
C:\Program Files\AutoCAD 2008\support\color\
C:\Program Files\AutoCAD 2008\drv\
C:\Program Files\AutoCAD 2008\
*Invalid*
; error: Function cancelled

Bạn giúp minh khắc phục nhé. Bạn ơi có thể giúp mình bổ sung thêm tinh năng này nhé : khi dùng lệnh có thể minh có thể chọn được kích thước của text nhé
  • 0

#4 hung1608

hung1608

    biết lệnh rotate

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

Đã gửi 25 August 2010 - 02:36 PM

Bạn ơi hướng dẫn mình làm cụ thể đi. Chứ mình không rõ lắm về block thuộc tính đâu. Cảm ơn bạn nhé.
  • 0

#5 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 25 August 2010 - 08:41 PM

Oạch.
Thôi thì đành phải nhiệt tình một chút:
Bạn nhập lệnh ATTDEF sẽ xuất hiện hộp thoại (Cad 2010) Attribute Definition
- Tại ô Tag hãy nhập vài ký tự thẻ hiện thuộc tính (trong trường hợp này có thể nhập "CAODO") để tiện theo dõi về sau
- Tại ô Prompt: Nhập dòng thông báo (Cao độ) thông báo này sẽ xuất hiện khi ta chèn Block
- Các mục khác bạn hãy nghiên cứu
- Nhấn Ok, nó sẽ đòi chọn điểm chèn (trong trường hợp Specify on-screen được check), hãy chọn 1 điểm trên bản vẽ
- Như vậy đã tạo ra được 1 thuộc tính
- Tiếp theo vẽ thêm các chi tiết của Block (Ký hiệu cao độ) vào vị trí thích hợp với thuộc tính
- Tiếp theo nhập lệnh BLOCK để tạo Block, hãy chọn điểm chèn, chọn các đối tượng bao gồm các chi tiết và thuộc tính vừa tạo
Thế là xong 1 Block có thuộc tính.
Ok? Chúc vui.
  • 1

#6 hung1608

hung1608

    biết lệnh rotate

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

Đã gửi 26 August 2010 - 11:51 AM

Bạn ơi minh tạo được block thuộc tính như bạn bảo rồi nhưng lisp của bạn bị lỗi không dùng được. Khi load xong dùng lệnh caodo thì nó báo thế này nhè
Command: caodo
Unknown command "CAODO". Press F1 for help.
Bạn kiểm tra giúp mình cái.
Mình up luôn file để bạn xem nhé. http://www.cadviet.c...es/3/cao_do.rar . Mình dùng là cad 08 bạn nhé.
Cảm ơn bạn rất nhiều.
  • 0

#7 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 26 August 2010 - 11:57 AM

Bạn không đọc kỹ rồi
Phải tạo 2 Block có tê là CaoDoR và CaoDoL nhé
  • 0

#8 hung1608

hung1608

    biết lệnh rotate

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

Đã gửi 26 August 2010 - 02:11 PM

Mình tạo đúng 2 block đó rồi mà : http://www.cadviet.c...les/3/caodo.dwg. Khi load lisp nó bị thế này nhè:
Command: ap APPLOAD Caodo.lsp successfully loaded.
Command: ; error: malformed list on input.
Ban kiểm tra lại hộ mình nhé
  • 0

#9 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 26 August 2010 - 07:59 PM

Thành thật xin lỗi bạn, không hiểu khi copy vào đây thế nào mà lại thừa 1 dấu ( ở đầu tiên. Tôi đã sửa lại, bọn có thể copy về dùng.
Còn việc định nghĩa 2 Block của bạn như thế là đúng rồi, chỉ có điều điểm chèn bạn để xa quá, tôi cũng đã sửa lại.
http://www.cadviet.c...s/3/caodo_1.dwg
  • 1

#10 hung1608

hung1608

    biết lệnh rotate

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

Đã gửi 27 August 2010 - 04:37 PM

Xin lỗi lại làm phiền bạn tiếp nhé. Lisp và block của bạn down về mình dùng ổn rồi nhưng khi mình thử tạo 1 block khác dung lisp lại bị lỗi bạn à.Khi dùng lệnh xong thì cái block no lại bay ra rất xa diểm mình chon. Ban xem lại hộ mình nhé :http://www.cadviet.com/upfiles/3/caodo_2.dwg . Nếu có thể bạn có thể tăng thêm tính năng này không nhé cho mình: mình có thể chọn khoảng cách của block tới điểm đầu của đoạn thẳng không nhé và thêm 1 tính năng nữa là mình có thể lật ngược lại cái block đó nữa nhé bởi khi vẽ bọn mình hay bị chèn vào thiết bị vệ sinh lắm ( hời khó hiểu nhưng trong bản vẽ mình có chú thích rôi ). Cam ơn ban nhé.
  • 0

#11 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 28 August 2010 - 10:44 AM

- "bay rất xa" là do bạn định nghĩa điểm chèn của Block như tôi đã nói ở trên
- Đã bổ sung chức năng nhập khoảng cách
- Đã bổ sung chức năng lật ngược với điều kiện bạn phải tạo thêm 2 Block nữa đó là CaoDoLUD và CaoDoRUD (lật ngược của 2 cái Block trước)
  • 1

#12 hung1608

hung1608

    biết lệnh rotate

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

Đã gửi 08 October 2010 - 11:03 AM

hi, cái lisp này mình dùng rất ổn , nhưng chỉ có 1 điểm hơi phiền phức là tạo tói 4 block thuoc tính. Các bạn nào có thể giúp mình chỉ dùng 1 block thuộc tính mà vẫn giữ được các chức năng ở trên không. Các bạn giúp mình nhé. Thanks.
  • 0