Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
hatieu

Lisp vẽ Angle các loại có cả file .DAT

Các bài được khuyến nghị

Đây là lisp ai xem dùm với!!!! Lỗi gì vậy ta

;  Chansik, Ahn
;  1993. 6. 29
;  ANGLE.LSP
(vmon)
(DEFUN C:ANGLE ( / A B t r1 r2 STR LP I type)


   (SETVAR "BLIPMODE" 0)
   (SETQ FP (open (findfile "angle.dat") "r"))

 (SETQ STR (READ-LINE FP))
 (SETQ LP 1)
 (SETQ I 0)
 (COMMAND "VSLIDE" "ANGLE")
;(PROMPT "\n				***********  ANGLE SIZE  *************				  ")
;(PROMPT "\n Equal Angle ")
;(PROMPT "\nÚÄÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄ¿")
;(PROMPT "\n³ No. ³ 1A ³ 1B ³ 1C ³ 1D ³ 1E ³ 1F ³ 1G ³ 1H ³ 1i ³ 1J ³ 1K ³ 1L ³ 1M ³")
;(PROMPT "\nÃÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´")
;(PROMPT "\n³  A  ³ 25 ³ 30 ³ 40 ³ 40 ³ 45 ³ 45 ³ 50 ³ 50 ³ 50 ³ 60 ³ 60 ³ 65 ³ 65 ³")
;(PROMPT "\n³  B  ³ 25 ³ 30 ³ 40 ³ 40 ³ 45 ³ 45 ³ 50 ³ 50 ³ 50 ³ 60 ³ 60 ³ 65 ³ 65 ³")
;(PROMPT "\n³  t  ³  3 ³  3 ³  3 ³  5 ³  4 ³  5 ³  4 ³  5 ³  6 ³  4 ³  5 ³  5 ³  6 ³")
;(PROMPT "\nÆÍÍÍÍÍØÍÍÍÍØÍÍÍÍØÍÍÍÍØÍÍÍÍØÍÍÍÍØÍÍÍÍØÍÍÍÍØÍÍÍÍØÍÍÍÍØÍÍÍÍØÍÍÍÍØÍÍÍÍØÍÍÍ͵")
;(PROMPT "\n³ No. ³ 2A ³ 2B ³ 2C ³ 2D ³ 2E ³ 2F ³ 2G ³ 2H ³ 2i ³ 2J ³ 2K ³ 2L ³ 2M ³")
;(PROMPT "\nÃÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´")
;(PROMPT "\n³  A  ³ 65 ³ 70 ³ 75 ³ 75 ³ 75 ³ 80 ³ 90 ³ 90 ³ 90 ³100 ³100 ³100 ³100 ³")
;(PROMPT "\n³  B  ³ 65 ³ 70 ³ 75 ³ 75 ³ 75 ³ 80 ³ 90 ³ 90 ³ 90 ³100 ³100 ³100 ³100 ³")
;(PROMPT "\n³  t  ³  8 ³  6 ³  6 ³  9 ³ 12 ³  6 ³  6 ³  7 ³ 10 ³ 13 ³  7 ³ 10 ³ 13 ³")
;(PROMPT "\nÀÄÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÙ")
;(PROMPT "\n Unequal Angle ")
;(PROMPT "\nÚÄÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄ¿")
;(PROMPT "\n³ No. ³ 3A ³ 3B ³ 3C ³ 3D ³ 3E ³ 3F ³ 3G ³ 3H ³ 3i ³ 3J ³ 3K ³ 3L ³ 3M ³")
;(PROMPT "\nÃÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´")
;(PROMPT "\n³  A  ³ 90 ³100 ³100 ³125 ³125 ³125 ³125 ³125 ³150 ³150 ³150 ³150 ³150 ³")
;(PROMPT "\n³  B  ³ 75 ³ 75 ³ 75 ³ 75 ³ 75 ³ 75 ³ 90 ³ 90 ³ 90 ³ 90 ³100 ³100 ³100 ³")
;(PROMPT "\n³  t  ³  9 ³  7 ³ 10 ³  7 ³ 10 ³ 13 ³ 10 ³ 13 ³  9 ³ 12 ³  9 ³ 12 ³ 15 ³")
;(PROMPT "\nÀÄÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÙ")
;(PROMPT "\n************************************************************************\n")
  (CLOSE FP)
  (SETQ TYPE (STRCASE (GETSTRING "Select a ANGLE < No.>: ")))
  (SETQ FP (open (findfile "angle.dat") "r"))
  (SETQ STR (READ-LINE FP))
  (SETQ LP 1)
  (command "redraw")
  (WHILE LP
  (SETQ STR (READ-LINE FP))
  (IF (= STR nil) (SETQ LP nil))
  (IF (= TYPE (SUBSTR STR 1 2)) (SETQ LP nil))
  )

  (CLOSE FP)
 (SETQ A (ATOF (SUBSTR STR 18 3)))
 (SETQ B (ATOF (SUBSTR STR 23 3)))
 (SETQ t (ATOF (SUBSTR STR 28 2)))
 (SETQ r1 (ATOF (SUBSTR STR 33 3)))
 (SETQ r2 (ATOF (SUBSTR STR 39 3)))

		(GRAPHSCR)
		(SETQ PNT (GETPOINT " Pick the base point: "))
		(RESET)
		(SETVAR "orthoMODE" 1)
		(SETQ Dang (GETangle pnt " Direction of base face: "))
		(SETQ dang (rTd dang))
		(SETQ P1 (POLAR PNT (DTR dang) B))
		(SETQ P2 (POLAR PNT (DTR (+ dang 90)) A))
		(SETQ P3 (POLAR P1 (DTR (+ dang 90)) (- t r2)))
		(SETQ P4 (POLAR P3 (DTR (+ dang 135)) (/ r2 (COS (DTR 45)))))
		(SETQ P5 (POLAR P4 (DTR (+ dang 180)) (- B (+ t r1 r2))))
		(SETQ P6 (POLAR P5 (DTR (+ dang 135)) (/ r1 (COS (DTR 45)))))
		(SETQ P7 (POLAR P6 (DTR (+ dang 90)) (- A (+ t r1 r2))))
		(SETQ P8 (POLAR P7 (DTR (+ dang 135)) (/ r2 (COS (DTR 45)))))

		(COMMAND "LAYER" "S" "5" "")
(command "PLINE" Pnt "W" "0" "0" P1 p3 "A" p4 "L" p5 "A" p6 "L" p7 "A" p8 "L" p2 "C")
		 (SETVAR "BLIPMODE" 1)
		 (RESET1)
 (PRIN1)
 )

 

Còn đây là file .DAT

File angle.dat

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Đây là lisp ai xem dùm với!!!! Lỗi gì vậy ta

;  Chansik, Ahn
;  1993. 6. 29
;  ANGLE.LSP
(vmon)
(DEFUN C:ANGLE ( / A B t r1 r2 STR LP I type)
   (SETVAR "BLIPMODE" 0)
   (SETQ FP (open (findfile "angle.dat") "r"))

 (SETQ STR (READ-LINE FP))
 (SETQ LP 1)
 (SETQ I 0)
 (COMMAND "VSLIDE" "ANGLE")

  (CLOSE FP)
  (SETQ TYPE (STRCASE (GETSTRING "Select a ANGLE : ")))
  (SETQ FP (open (findfile "angle.dat") "r"))
  (SETQ STR (READ-LINE FP))
  (SETQ LP 1)
  (command "redraw")
  (WHILE LP
  (SETQ STR (READ-LINE FP))
  (IF (= STR nil) (SETQ LP nil))
  (IF (= TYPE (SUBSTR STR 1 2)) (SETQ LP nil))
  )

  (CLOSE FP)
 (SETQ A (ATOF (SUBSTR STR 18 3)))
 (SETQ B (ATOF (SUBSTR STR 23 3)))
 (SETQ t (ATOF (SUBSTR STR 28 2)))
 (SETQ r1 (ATOF (SUBSTR STR 33 3)))
 (SETQ r2 (ATOF (SUBSTR STR 39 3)))

		(GRAPHSCR)
		(SETQ PNT (GETPOINT " Pick the base point: "))
		(RESET)
		(SETVAR "orthoMODE" 1)
		(SETQ Dang (GETangle pnt " Direction of base face: "))
		(SETQ dang (rTd dang))
		(SETQ P1 (POLAR PNT (DTR dang) B))
		(SETQ P2 (POLAR PNT (DTR (+ dang 90)) A))
		(SETQ P3 (POLAR P1 (DTR (+ dang 90)) (- t r2)))
		(SETQ P4 (POLAR P3 (DTR (+ dang 135)) (/ r2 (COS (DTR 45)))))
		(SETQ P5 (POLAR P4 (DTR (+ dang 180)) (- B (+ t r1 r2))))
		(SETQ P6 (POLAR P5 (DTR (+ dang 135)) (/ r1 (COS (DTR 45)))))
		(SETQ P7 (POLAR P6 (DTR (+ dang 90)) (- A (+ t r1 r2))))
		(SETQ P8 (POLAR P7 (DTR (+ dang 135)) (/ r2 (COS (DTR 45)))))

		(COMMAND "LAYER" "S" "5" "")
(command "PLINE" Pnt "W" "0" "0" P1 p3 "A" p4 "L" p5 "A" p6 "L" p7 "A" p8 "L" p2 "C")
		 (SETVAR "BLIPMODE" 1)
		 (RESET1)
 (PRIN1)
 )

 

Còn đây là file .DAT

File angle.dat

 

Chào bạn hatieu,

Chắc bạn chép lisp không đầy đủ rồi. Cái hàm (vmon) này ở đâu ra vậy, mình tìm hoài trong help chả thấy có chỗ nào nói về cái hàm này cả.

Cái file angle.dat bạn có đặt nó trong các thư mục tìm kiếm của CAD hay không??? Nếu không có thì lisp báo lỗi là đương nhiên bạn ạ.

Bạn hãy kiểm tra lại nhé.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Chào bạn hatieu,

Chắc bạn chép lisp không đầy đủ rồi. Cái hàm (vmon) này ở đâu ra vậy, mình tìm hoài trong help chả thấy có chỗ nào nói về cái hàm này cả.

Cái file angle.dat bạn có đặt nó trong các thư mục tìm kiếm của CAD hay không??? Nếu không có thì lisp báo lỗi là đương nhiên bạn ạ.

Bạn hãy kiểm tra lại nhé.

Chào anh Bình!

(vmon)Virtual Memory On. Hàm này dùng ở cái thời xưa lắc xưa lơ, khi còn tồn tại hệ điều hành DOS và cấu hình computer thấp lè tè! Thường người ta gọi (vmon) ở đầu chương trình lisp để kích hoạt bộ nhớ ảo. Hiện nay, (vmon) đã xếp vào viện bảo tàng, không cần dùng đến nữa. Tuy nhiên, "nguyên tắc vàng" của AutoLisp là bất cứ cái gì bạn đã học được từ "thời xửa thời xưa" đều có thể áp dụng được vào "thời nảy thời nay". Do đó, dù không có tác dụng, khi gọi (vmon) AutoCAD vẫn chấp nhận mà không báo lỗi. Ssg "mê" Lisp chính là ở chỗ này!

Anh thử nhập (vmon) ở dòng Command: xem, nó return nil và không có "ý kiến" gì (nếu không chấp nhận thì nó phải báo lỗi: ; error: no function definition: VMON)

 

@hatieu

Anh Bình nói đúng, Lisp bạn chép thiếu nhiều thứ lắm, không chạy được đâu. Bạn đến chỗ đã cho bạn chép để bổ sung.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

dear Anh Bình!!!

File đó em chép đầy đủ không thiếu đâu. Còn file .DAT em cũng chẳng biết để đâu thì nó tìm thấy nữa (SETQ FP (open (findfile "angle.dat") "r"))

Em cũng thử đủ mọi cách mà không biết làm thế nào để dùng được

dear anh SSQ!!!

Em cũng không biết được lisp này thiếu cái gì nữa.Lisp này của em dùng để vẽ angle. anh xem có sửa cho em được không.

Nếu lisp này có thiếu thì chắc là thiếu từ trước khi em copy về.hicss

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
dear Anh Bình!!!

File đó em chép đầy đủ không thiếu đâu. Còn file .DAT em cũng chẳng biết để đâu thì nó tìm thấy nữa (SETQ FP (open (findfile "angle.dat") "r"))

Em cũng thử đủ mọi cách mà không biết làm thế nào để dùng được

dear anh SSQ!!!

Em cũng không biết được lisp này thiếu cái gì nữa.Lisp này của em dùng để vẽ angle. anh xem có sửa cho em được không.

Nếu lisp này có thiếu thì chắc là thiếu từ trước khi em copy về.hicss

Chào bạn hatieu!

Căn cứ vào code, tác giả xây dựng chương trình không chỉ có 2 file bạn đã chép (*.lsp và *.dat) mà còn một số file khác. Ít nhất phải có thêm 1 file *.lsp chứa các function con và 1 file ANGLE.dwg để hiển thị hình ảnh mặt cắt angle lên màn hình.

Mỗi người có một "cung cách" và quan điểm lập trình khác nhau, sửa lisp vất vả và mất thời gian lắm, lập chương trình mới còn sướng hơn!

Bạn tham khảo chương trình Mechanical CadViet, trong đó có tính năng vẽ các loại thép hình (I, U, V, L):

http://www.cadviet.com/forum/index.php?showtopic=1835

Chương trình cho phép bạn bổ sung thêm quy cách thép nếu cần. Chỉ e rằng bạn không thuộc chuyên ngành Cơ khí, có nhiều phần bạn không dùng đến. Nếu bạn biết chút chút về lisp thì tự tách riêng ra cái mình cần. Bản thân ssg đang rất nhiều việc phải làm (cả mấy tháng nay không đụng gì đến lisp) chắc không thể giúp được gì hơn cho bạn. Mong bạn thông cảm!

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay
Đăng nhập để thực hiện theo  

×