Đến nội dung


Hình ảnh
- - - - -

Hỏi về cách vẽ nhanh bằng lisp hoặc bằng cách nào đó?


  • Please log in to reply
17 replies to this topic

#1 trinhtoan37

trinhtoan37

    biết zoom

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

Đã gửi 03 January 2012 - 12:25 PM

Các bác chỉ dùm e cách vẽ nhanh bản vẽ như hình sau:

http://www.cadviet.c...0046_hinhve.dwg

- trên đường cong cố định có đánh số tt 1, 2, 3...6
- cần vẽ các đường 1, đường 2, đường 3.
- đường 1 được vẽ như sau: từ điểm 1 lấy gióng lên 1 khoảng d1, điểm 2 lấy d2, điểm 3 lấy d3...sau đó nối các điểm gióng đó với nhau bằng spline ta được đường 1.
-các đường 2, 3 tương tự.
nếu vẽ từng điểm thì rất lâu nếu có nhiều đường như thế, vây bác nào có cách nào nhanh các đường trên thì chỉ dùm, các số liệu d1, d2,...được lập trong bảng excel.
cảm ơn các bác
  • 0

#2 trinhtoan37

trinhtoan37

    biết zoom

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

Đã gửi 03 January 2012 - 01:46 PM

Bác nào chỉ giúp cách post hình ảnh lên cái ạ.híc...
  • 0

#3 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 03 January 2012 - 01:48 PM

Bác nào chỉ giúp cách post hình ảnh lên cái ạ.híc...

Bạn vào Upload (ở trên cùng), up xong, copy đường dẫn để paste vào nội dung.
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#4 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 03 January 2012 - 02:02 PM

Cảm ơn bác.

Lấy dóng lên với các khoảng cách d1,d2... nhưng dóng theo hướng như thế nào? Lisp dưới đây tạm lấy hướng lên trên theo truc Y, nếu không vừa ý thì sửa lại.

;Doan Van Ha - CADViet.com - Ngay 03/01/2012
;Muc dich: Ve Spline tu cac diem khac dua vao cac khoang cach.
(defun C:HA(/ p kc q listpoint lst pp)
(BAT_DAU)
(while (and (setq p (getpoint "\nChon diem: ")) (setq kc (getreal "\nNhap khoang cach: ")))
(setq q (polar p (/ pi 2) kc))
(setq listpoint (cons q listpoint)))
(setq lst (list '(0 . "SPLINE") '(100 . "AcDbEntity") '(100 . "AcDbSpline") (cons 71 3) (cons 74 (length listpoint))))
(foreach pp listpoint
(setq lst (append lst (list (cons 11 pp)))))
(entmake lst)
(KET_THUC)
(princ))
(defun BAT_DAU()
(vl-load-com)
(setq AcDoc (vla-get-activeDocument (vlax-get-acad-object)))
(vla-StartUndoMark AcDoc)
(setq err *error* *error* KHI_LOI))
(defun KET_THUC()
(acet-sysvar-restore)
(vla-EndUndoMark AcDoc)
(setq *error* err))
(defun KHI_LOI(msg)
(acet-sysvar-restore)
(vla-EndUndoMark AcDoc)
(redraw)
(command "u")
(princ (strcat "\n" msg ", Reset System Variables\n"))
(setq *error* err))

  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#5 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 03 January 2012 - 03:03 PM

Lấy dóng lên với các khoảng cách d1,d2... nhưng dóng theo hướng như thế nào? Lisp dưới đây tạm lấy hướng lên trên theo truc Y, nếu không vừa ý thì sửa lại.

Hề hề hề,
Rất cám ơn bác DoanvanHa về cái hàm entmake để tạo spline.
Tuy nhiên hình như lisp này chưa thỏa mãn yêu cầu của chủ thớt. cái tham số kc của bác chủ thớt muốn lisp tự lấy từ một bảng thống kê trong excel chứ không muốn phải tự tay nhập từng em vào bác ạ.....
Hề hề hề,...
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#6 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 03 January 2012 - 03:12 PM

Hề hề hề,
Rất cám ơn bác DoanvanHa về cái hàm entmake để tạo spline.
Tuy nhiên hình như lisp này chưa thỏa mãn yêu cầu của chủ thớt. cái tham số kc của bác chủ thớt muốn lisp tự lấy từ một bảng thống kê trong excel chứ không muốn phải tự tay nhập từng em vào bác ạ.....
Hề hề hề,...

Hề hề hề! Ai biểu chủ thớt giấu bảng excel nên tôi đâu biết nội tình nó ra răng. Cứ mần rứa rồi đưa lên mần tiếp. Hề hề hề!
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#7 trinhtoan37

trinhtoan37

    biết zoom

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

Đã gửi 03 January 2012 - 03:15 PM

Tks bác, đúng ý e rùi ạ. Nhưng mà bác có thể chỉnh lại để lisp nhận số liệu từ file excel được ko bác? Một cột là tọa độ của các điểm 1, 2, 3..còn cột còn lại là giá trị khoảng cách "di" tuơng ứng giá trị điểm ở cột bên không ạ? mà nếu vẽ được cho nhiều cột "di" thì càng ngon, :D, vì e có nhiều đường mà.hiii
  • 0

#8 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 03 January 2012 - 03:17 PM

Tks bác, đúng ý e rùi ạ. Nhưng mà bác có thể chỉnh lại để lisp nhận số liệu từ file .txt hoặc file excel được ko bác? Một cột là tọa độ của các điểm 1, 2, 3..còn cột còn lại là giá trị khoảng cách "di" tuơng ứng giá trị điểm ở cột bên không ạ?

Cứ gởi file số liệu lên xem.

Kinh nghiệm xương máu là chỉ khi có file mới mần lisp, vì nhiều khi người ra đề cũng 0 rõ mình ra cái gì.


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#9 trinhtoan37

trinhtoan37

    biết zoom

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

Đã gửi 03 January 2012 - 03:30 PM

File excel đây bác.
http://www.cadviet.c...g_so_lieu_1.rar
e vừa sửa lại, bác down lại nhé
  • 0

#10 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 03 January 2012 - 08:18 PM

File excel đây bác.
http://www.cadviet.c...g_so_lieu_1.rar
e vừa sửa lại, bác down lại nhé

Đây bạn!

;Doan Van Ha - CADViet.com - Ngay 03/01/2012
;Muc dich: Ve Spline tu cac diem duoc chon va khoang cach lay tu file.
;Thu tu cac diem tang dan tu 1->n.
;So cot trong file va so diem chon khong can bang nhau.
;Ve tat ca so lieu co trong tat ca dong.
(defun C:HA(/ p q listpoint lst lst1 pp fr tagf valf i dong)
(BAT_DAU)
(setq fn (getfiled "Chon File de lay so lieu" "" "csv" 0))
(princ "\nLan luot chon tung diem theo thu tu STT tang dan...")
(while (setq p (getpoint "\nChon diem: "))
(setq listpoint (cons p listpoint)))
(setq listpoint (reverse listpoint))
(setq fr (open fn "r"))
(setq tagf (LM:str->lst (read-line fr) ","))
(while (and (setq dong (read-line fr)) (setq valf (LM:str->lst dong ",")))
(setq i 0 lst1 nil)
(repeat (min (length listpoint) (length valf))
(setq q (polar (nth i listpoint) (/ pi 2) (atof (nth i valf))))
(setq lst1 (cons q lst1))
(setq i (1+ i)))
(setq lst1 (reverse lst1))
(setq lst (list '(0 . "SPLINE") '(100 . "AcDbEntity") '(100 . "AcDbSpline") (cons 71 3) (cons 74 (length lst1))))
(foreach pp lst1
(setq lst (append lst (list (cons 11 pp)))))
(entmake lst))
(KET_THUC)
(princ))
(defun LM:str->lst (str del / pos) (if (setq pos (vl-string-search del str)) (cons (substr str 1 pos) (LM:str->lst (substr str (+ pos 1 (strlen del))) del)) (list str)))
(defun BAT_DAU()
(vl-load-com)
(setq AcDoc (vla-get-activeDocument (vlax-get-acad-object)))
(vla-StartUndoMark AcDoc)
(setq err *error* *error* KHI_LOI))
(defun KET_THUC()
(acet-sysvar-restore)
(vla-EndUndoMark AcDoc)
(setq *error* err))
(defun KHI_LOI(msg)
(acet-sysvar-restore)
(vla-EndUndoMark AcDoc)
(redraw)
(command "u")
(princ (strcat "\n" msg ", Reset System Variables\n"))
(setq *error* err))
Chú ý: để việc lấy số liệu không bị lỗi bạn cần đưa về file CSV như file mẫu tôi đính kèm dưới đây.
http://www.cadviet.c...ng_so_lieu1.zip
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#11 trinhtoan37

trinhtoan37

    biết zoom

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

Đã gửi 04 January 2012 - 03:47 PM

Lisp rất chuẩn. Không biết nói gì ngoài lời Cảm ơn bác Doan Van Hà. :D(Bác có fai dân 37 ko?Lớp 12E hht?)
  • 0

#12 trinhtoan37

trinhtoan37

    biết zoom

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

Đã gửi 08 February 2012 - 03:58 PM

Nhờ pác chỉnh sửa lại 1 chút xíu, đó là: "Vẽ thêm các đường gióng từ các điểm vẽ lên đường Spline"
Pác có thể sửa giúp e cả 2 lisp trên mà pác viết ko? Vì e dùng cả 2 lisp trên.
  • 0

#13 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 08 February 2012 - 04:20 PM

Nhờ pác chỉnh sửa lại 1 chút xíu, đó là: "Vẽ thêm các đường gióng từ các điểm vẽ lên đường Spline"
Pác có thể sửa giúp e cả 2 lisp trên mà pác viết ko? Vì e dùng cả 2 lisp trên.

Tôi sẽ không sửa trực tiếp trên 2 lisp đó vì post nhiều lần nó loãng diễn đàn, mà chỉ hướng dẫn cách để bạn tự làm như sau:
Bạn tìm trong từng lisp, ngay ở dưới chỗ nào có dòng (setq q ...) bạn dán chèn dòng dưới đây vào là được:
(entmake (list (cons 0 "LINE") (cons 10 p) (cons 11 q)))
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#14 trinhtoan37

trinhtoan37

    biết zoom

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

Đã gửi 09 February 2012 - 09:24 AM

Đối với lisp đầu thì ngon, còn lisp nhập số liệu từ file thì ko được pác ơi. pác thử xem lại coi nha.
Nó báo lỗi thế này:
"; error: An error has occurred inside the *error* functionno function
definition: ACET-SYSVAR-RESTORE"
  • 0

#15 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 09 February 2012 - 09:31 AM

Đối với lisp đầu thì ngon, còn lisp nhập số liệu từ file thì ko được pác ơi. pác thử xem lại coi nha.
Nó báo lỗi thế này:
"; error: An error has occurred inside the *error* functionno function
definition: ACET-SYSVAR-RESTORE"

Hề hề hề,
Bạn xem lại nhé, bởi vì dòng code mà bác DoanVanha bảo bạn chèn thêm chả dính dáng gì tới các hàm acet cả. Lỗi này có thể là do bạn chưa cài bộ Express tools mà nếu vậy thì cái lisp cũ bạn cũng sẽ không chạy được bạn ạ chứ chả nói chi tới cái việc sửa này.
Đây là điều bạn cần biết khi sử dụng lisp.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#16 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 09 February 2012 - 09:33 AM

Đối với lisp đầu thì ngon, còn lisp nhập số liệu từ file thì ko được pác ơi. pác thử xem lại coi nha.
Nó báo lỗi thế này:
"; error: An error has occurred inside the *error* functionno function
definition: ACET-SYSVAR-RESTORE"

Srr bạn, đối với lisp đọc từ file thì chèn dòng này:
(entmake (list (cons 0 "LINE") (cons 10 (nth i listpoint)) (cons 11 q)))
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#17 trinhtoan37

trinhtoan37

    biết zoom

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

Đã gửi 09 February 2012 - 03:01 PM

Tuyệt vời. Cảm ơn 2 pác Phamthanhbinh và Doan van ha. Lisp dùng ngon rồi ah.
  • 0

#18 quansla

quansla

    biết lệnh xclip

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

Đã gửi 26 June 2012 - 08:43 PM

Tuyệt vời. Cảm ơn 2 pác Phamthanhbinh và Doan van ha. Lisp dùng ngon rồi ah.

Hay thật, trước em đọc help phần ssget rồi mà ngại tìm hiểu đoạn tham số hàm, toàn những cái hay thế này, khai sáng khai sáng, hìhif
  • 0