Đến nội dung


Hình ảnh
- - - - -

nhờ viết lisp vẽ đồ thị trên cad số liệu được lấy từ file excel


  • Please log in to reply
19 replies to this topic

#1 nguyenbac_cd

nguyenbac_cd

    biết vẽ line

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

Đã gửi 23 November 2014 - 12:35 PM

Chào cả nhà Cadviet !

Tình hình là em đang thiết kế điều phối đất.

Khi vẽ đường cong tích lũy đất,điều mà vất vả nhất chính là ngồi vẽ thủ công lại cột

Khối lượng đường cong tích lũy.

(HÌNH VẼ 1)

Mong muốn của em là nhờ được viết một lisp tự động vẽ đồ thị khối lượng đất tích lũy như hình: (đường SPL nối liền tung độ Y),

 

Với số liệu được lấy từ 2 cột (X,Y) từ excel ví dụ như:(hình vẽ 2)

 

 

.tự động đánh luôn khối lượng (tung độ Y) nếu Y>0,được vẽ lên phía trên trục hoành , nếu Y<0 thì được vẽ phía dưới trục hoành (phần chữ thể hiện khối lượng đặt ngược lại chiều vẽ Y như hình vẽ 1)

Với mong muốn lisp:

  1. Chọn vị trí đặt điểm gốc tọa độ
  2. chọn số liệu cột X
  3. Nhập tỉ lệ theo phương X (ví dụ :1/5000 thì X=50m =50000mm thì vẽ ra 10mm)
  4. chọn số liệu cột Y
  5. Nhập tỷ lệ theo phương Y(ví dụ :1/200 thì Y=826m3 =thì vẽ cao 826/200mm)
  6. Chọn chiều cao chữ.(cái này có thể không cần, sau mình có thể dùng lisp đổi cao chữ)

 

nếu lisp này có thì rất tiện ích ,có thể dùng để vẽ lại biểu đồ nội lực(cho rõ ràng hơn,đẹp hơn) với số liệu có được từ tệp mở rộng *.txt của các phần mềm PTHH như sap,midas,....

trong autocad cũng có chức năng vẽ được hình dạng đồ thị với 2 cột (X,Y) được ghép vào 1 cột trong excel nhưng vẽ ra không có đường gióng tung độ, mà chỉ thể hiện dạng của đồ thị .

 

mong các anh giúp đỡ.!


  • 0

#2 nguyenbac_cd

nguyenbac_cd

    biết vẽ line

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

Đã gửi 23 November 2014 - 12:43 PM

hình vẽ 1

 

122241_2222222.png


  • 0

#3 nguyenbac_cd

nguyenbac_cd

    biết vẽ line

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

Đã gửi 23 November 2014 - 12:45 PM

HÌNH VẼ 2

122241_11111111111_1.png


  • 0

#4 nguyenbac_cd

nguyenbac_cd

    biết vẽ line

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

Đã gửi 23 November 2014 - 05:50 PM

có lẽ yêu cầu của em hơi nhiều, hihi

nếu có thể các anh có thể viết lisp vẽ đồ thị với số liệu được lấy từ autocad cũng được.!


  • 0

#5 VUVUZELA

VUVUZELA

    biết lệnh chamfer

  • Members
  • PipPipPipPip
  • 210 Bài viết
Điểm đánh giá: 97 (tàm tạm)

Đã gửi 24 November 2014 - 04:42 PM

Cái này cần gì viết li sp hả bác

Copy số liệu này vào Nova, coi như cột m3 là cao độ đường đen

CHạy trắc dọc tự nhiên là xong 


  • 0

Hệ thống Liên Kết, Thiết Kế Tự Động

ttps://www.facebook...etThietKeTuDong


#6 nguyenkhachoan

nguyenkhachoan

    biết pan

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

Đã gửi 24 November 2014 - 04:50 PM

Thử cái này xem có tận dụng được gì không bạn.

Lưu ý là trước khi chạy lệnh bạn mở file Excel và chọn vùng dữ liệu cần vẽ thôi nhé.http://www.cadviet.c...ve_trac_doc.lsp


  • 1

#7 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 24 November 2014 - 10:25 PM

Tặng chủ topic cái này, mới viết xong. Hy vọng hài lòng.

;Doan Van Ha - CADViet.com - Ngay 24/11/2014
;Muc dich: Ve Spline qua cac diem duoc ghi trong file txt (moi hang la 1 diem, X va Y cach nhau boi 1 ky tu tab; ve duong dong; ghi text cao do duong duoi am tren).
(defun C:HA3( / fn ss pr rl txt pt pd lst)
 (command "ucs" "w") (command "undo" "be")
 (setq fn (getfiled "Chon file de lay so lieu" "" "txt" 8))
 (or (and tlx (or (= (type tlx) 'int) (= (type tlx) 'real))) (setq tlx 200))
 (setq tlx (cond ((getreal (strcat "\nTi le theo phuong X <" (rtos tlx 2 0) ">: "))) (tlx)))
 (or (and tly (or (= (type tly) 'int) (= (type tly) 'real))) (setq tly 5000))
 (setq tly (cond ((getreal (strcat "\nTi le theo phuong Y <" (rtos tly 2 0) ">: "))) (tly)))
 (or (and hei (or (= (type hei) 'int) (= (type hei) 'real))) (setq hei 0.10))
 (setq hei (cond ((getreal (strcat "\nChieu cao chu <" (rtos hei 2 2) ">: "))) (hei)))
 (setq ss (ssadd))
 (setq pr (open fn "r"))
 (while (setq rl (read-line pr))
  (setq txt (HA:str->lst rl (chr 9)))
  (setq pt (list (/ (car txt) tlx) (/ (cadr txt) tly)))
  (setq pd (list (/ (car txt) tlx) 0))
  (MakeLine pd pt 5)
  (ssadd (entlast) ss)
  (if (>= (cadr txt) 0)
   (MakeText (polar pd (/ pi -2) hei) (rtos (cadr txt) 2 0) hei 2 "MR")
   (MakeText (polar pd (/ pi 2) hei) (rtos (cadr txt) 2 0) hei 2 "ML"))
  (ssadd (entlast) ss)
  (setq lst (cons pt lst)))
 (close pr)
 (MakeSpline (reverse lst) 1)
 (ssadd (entlast) ss)
 (MakeLine (list (cadr (last lst)) 0) (list (caar lst) 0) 3)
 (ssadd (entlast) ss)
 (command "move" ss "" (list (cadr (last lst)) 0) pause)
 (command "undo" "e") (princ))
;----- String to List, EX: (HA:str->lst "1,2,3,4,5" ",") => (1 2 3 4 5)
(defun HA:str->lst ( str del / pos )
 (if (setq pos (vl-string-search del str))
  (cons (atof (substr str 1 pos)) (HA:str->lst (substr str (+ pos 1 (strlen del))) del)) 
  (list (atof str))))
(defun MakeSpline (lst col)
 (entmake (append (list '(0 . "SPLINE") '(100 . "AcDbEntity") (cons 62 col) '(100 . "AcDbSpline") (cons 71 3) (cons 74 (length lst))) (mapcar '(lambda (p) (cons 11 p)) lst))))
(defun MakeLine (p1 p2 col)
 (entmake (list (cons 0 "LINE") (cons 62 col) (cons 10 p1) (cons 11 p2))))
(defun MakeText (pt str hei col jus / lst)
 (setq lst (list '(0 . "TEXT") (cons 62 col) (cons 10 pt) (cons 40 hei) (cons 1 str) (cons 50 (/ pi 2))))
 (cond
  ((= jus "ML") (setq lst (append lst (list (cons 72 0) (cons 11 pt) (cons 73 2)))))
  ((= jus "MR") (setq lst (append lst (list (cons 72 2) (cons 11 pt) (cons 73 2))))))
 (entmake lst))
 

  • 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.


#8 nguyenbac_cd

nguyenbac_cd

    biết vẽ line

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

Đã gửi 25 November 2014 - 11:36 AM

Tặng chủ topic cái này, mới viết xong. Hy vọng hài lòng.

 

;Doan Van Ha - CADViet.com - Ngay 24/11/2014
;Muc dich: Ve Spline qua cac diem duoc ghi trong file txt (moi hang la 1 diem, X va Y cach nhau boi 1 ky tu tab; ve duong dong; ghi text cao do duong duoi am tren).
(defun C:HA3( / fn ss pr rl txt pt pd lst)
 (command "ucs" "w") (command "undo" "be")
 (setq fn (getfiled "Chon file de lay so lieu" "" "txt" 8))
 (or (and tlx (or (= (type tlx) 'int) (= (type tlx) 'real))) (setq tlx 200))
 (setq tlx (cond ((getreal (strcat "\nTi le theo phuong X <" (rtos tlx 2 0) ">: "))) (tlx)))
 (or (and tly (or (= (type tly) 'int) (= (type tly) 'real))) (setq tly 5000))
 (setq tly (cond ((getreal (strcat "\nTi le theo phuong Y <" (rtos tly 2 0) ">: "))) (tly)))
 (or (and hei (or (= (type hei) 'int) (= (type hei) 'real))) (setq hei 0.10))
 (setq hei (cond ((getreal (strcat "\nChieu cao chu <" (rtos hei 2 2) ">: "))) (hei)))
 (setq ss (ssadd))
 (setq pr (open fn "r"))
 (while (setq rl (read-line pr))
  (setq txt (HA:str->lst rl (chr 9)))
  (setq pt (list (/ (car txt) tlx) (/ (cadr txt) tly)))
  (setq pd (list (/ (car txt) tlx) 0))
  (MakeLine pd pt 5)
  (ssadd (entlast) ss)
  (if (>= (cadr txt) 0)
   (MakeText (polar pd (/ pi -2) hei) (rtos (cadr txt) 2 0) hei 2 "MR")
   (MakeText (polar pd (/ pi 2) hei) (rtos (cadr txt) 2 0) hei 2 "ML"))
  (ssadd (entlast) ss)
  (setq lst (cons pt lst)))
 (close pr)
 (MakeSpline (reverse lst) 1)
 (ssadd (entlast) ss)
 (MakeLine (list (cadr (last lst)) 0) (list (caar lst) 0) 3)
 (ssadd (entlast) ss)
 (command "move" ss "" (list (cadr (last lst)) 0) pause)
 (command "undo" "e") (princ))
;----- String to List, EX: (HA:str->lst "1,2,3,4,5" ",") => (1 2 3 4 5)
(defun HA:str->lst ( str del / pos )
 (if (setq pos (vl-string-search del str))
  (cons (atof (substr str 1 pos)) (HA:str->lst (substr str (+ pos 1 (strlen del))) del)) 
  (list (atof str))))
(defun MakeSpline (lst col)
 (entmake (append (list '(0 . "SPLINE") '(100 . "AcDbEntity") (cons 62 col) '(100 . "AcDbSpline") (cons 71 3) (cons 74 (length lst))) (mapcar '(lambda (p) (cons 11 p)) lst))))
(defun MakeLine (p1 p2 col)
 (entmake (list (cons 0 "LINE") (cons 62 col) (cons 10 p1) (cons 11 p2))))
(defun MakeText (pt str hei col jus / lst)
 (setq lst (list '(0 . "TEXT") (cons 62 col) (cons 10 pt) (cons 40 hei) (cons 1 str) (cons 50 (/ pi 2))))
 (cond
  ((= jus "ML") (setq lst (append lst (list (cons 72 0) (cons 11 pt) (cons 73 2)))))
  ((= jus "MR") (setq lst (append lst (list (cons 72 2) (cons 11 pt) (cons 73 2))))))
 (entmake lst))
 

không còn gì tuyệt vời hơn!

cảm ơn bác nhiều nhiều !122241_ok_men.png


  • 0

#9 nguyenbac_cd

nguyenbac_cd

    biết vẽ line

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

Đã gửi 25 November 2014 - 12:25 PM

đúng là con người ta cứ được voi rồi lại muốn đòi tiên ! :) hề hề

khi ứng dụng lisp để vẽ biểu đồ nội lực ( biểu đồ mo men cho đoạn dầm ) thì hình dạng đường SPL  sẽ không phù hợp bằng dạng đường PL ! trên biểu đồ có một số đoạn méo mó :) 122241_uppp.png

bác Doan Van Ha sửa thành vẽ dạng đường PL giúp em luôn nhé!

cảm ơn bác nhiều ạ!


  • 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 25 November 2014 - 01:37 PM

đúng là con người ta cứ được voi rồi lại muốn đòi tiên ! :) hề hề

khi ứng dụng lisp để vẽ biểu đồ nội lực ( biểu đồ mo men cho đoạn dầm ) thì hình dạng đường SPL  sẽ không phù hợp bằng dạng đường PL ! trên biểu đồ có một số đoạn méo mó :) 122241_uppp.png

bác Doan Van Ha sửa thành vẽ dạng đường PL giúp em luôn nhé!

cảm ơn bác nhiều ạ!

 

đúng là con người ta cứ được voi rồi lại muốn đòi tiên ! :) hề hề

khi ứng dụng lisp để vẽ biểu đồ nội lực ( biểu đồ mo men cho đoạn dầm ) thì hình dạng đường SPL  sẽ không phù hợp bằng dạng đường PL ! trên biểu đồ có một số đoạn méo mó :) 122241_uppp.png

bác Doan Van Ha sửa thành vẽ dạng đường PL giúp em luôn nhé!

cảm ơn bác nhiều ạ!

Lý do đường SPL méo mó là do số liệu méo mó. Bạn gởi file Méo_Mó.txt đó lên đây tôi xem sao.


  • 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 nguyenbac_cd

nguyenbac_cd

    biết vẽ line

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

Đã gửi 25 November 2014 - 06:08 PM

em nhầm lẫn chút! tại những đoạn  "méo mó" có 2 giá trị tung độ khác nhau, em xem lại rồi!

cảm ơn bác nhé!


  • 0

#12 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 26 November 2014 - 07:55 AM

Trong trường hợp này, tại những điểm trên có Q, M tập trung nên biểu đồ nội lực sẽ có bước nhảy. Vì vậy nếu tách thành các đoạn spline khác nhau mới thể hiện chính xác dạng của biểu đồ.


  • 1

#13 nguyenbac_cd

nguyenbac_cd

    biết vẽ line

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

Đã gửi 16 December 2014 - 05:10 PM

Trong trường hợp này, tại những điểm trên có Q, M tập trung nên biểu đồ nội lực sẽ có bước nhảy. Vì vậy nếu tách thành các đoạn spline khác nhau mới thể hiện chính xác dạng của biểu đồ.

bác này nói chính xác đấy !


  • 0

#14 mtrgnuce

mtrgnuce

    Chưa sử dụng CAD

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

Đã gửi 07 April 2015 - 02:58 PM

 

Tặng chủ topic cái này, mới viết xong. Hy vọng hài lòng.

;Doan Van Ha - CADViet.com - Ngay 24/11/2014
;Muc dich: Ve Spline qua cac diem duoc ghi trong file txt (moi hang la 1 diem, X va Y cach nhau boi 1 ky tu tab; ve duong dong; ghi text cao do duong duoi am tren).
(defun C:HA3( / fn ss pr rl txt pt pd lst)
 (command "ucs" "w") (command "undo" "be")
 (setq fn (getfiled "Chon file de lay so lieu" "" "txt" 8))
 (or (and tlx (or (= (type tlx) 'int) (= (type tlx) 'real))) (setq tlx 200))
 (setq tlx (cond ((getreal (strcat "\nTi le theo phuong X <" (rtos tlx 2 0) ">: "))) (tlx)))
 (or (and tly (or (= (type tly) 'int) (= (type tly) 'real))) (setq tly 5000))
 (setq tly (cond ((getreal (strcat "\nTi le theo phuong Y <" (rtos tly 2 0) ">: "))) (tly)))
 (or (and hei (or (= (type hei) 'int) (= (type hei) 'real))) (setq hei 0.10))
 (setq hei (cond ((getreal (strcat "\nChieu cao chu <" (rtos hei 2 2) ">: "))) (hei)))
 (setq ss (ssadd))
 (setq pr (open fn "r"))
 (while (setq rl (read-line pr))
  (setq txt (HA:str->lst rl (chr 9)))
  (setq pt (list (/ (car txt) tlx) (/ (cadr txt) tly)))
  (setq pd (list (/ (car txt) tlx) 0))
  (MakeLine pd pt 5)
  (ssadd (entlast) ss)
  (if (>= (cadr txt) 0)
   (MakeText (polar pd (/ pi -2) hei) (rtos (cadr txt) 2 0) hei 2 "MR")
   (MakeText (polar pd (/ pi 2) hei) (rtos (cadr txt) 2 0) hei 2 "ML"))
  (ssadd (entlast) ss)
  (setq lst (cons pt lst)))
 (close pr)
 (MakeSpline (reverse lst) 1)
 (ssadd (entlast) ss)
 (MakeLine (list (cadr (last lst)) 0) (list (caar lst) 0) 3)
 (ssadd (entlast) ss)
 (command "move" ss "" (list (cadr (last lst)) 0) pause)
 (command "undo" "e") (princ))
;----- String to List, EX: (HA:str->lst "1,2,3,4,5" ",") => (1 2 3 4 5)
(defun HA:str->lst ( str del / pos )
 (if (setq pos (vl-string-search del str))
  (cons (atof (substr str 1 pos)) (HA:str->lst (substr str (+ pos 1 (strlen del))) del)) 
  (list (atof str))))
(defun MakeSpline (lst col)
 (entmake (append (list '(0 . "SPLINE") '(100 . "AcDbEntity") (cons 62 col) '(100 . "AcDbSpline") (cons 71 3) (cons 74 (length lst))) (mapcar '(lambda (p) (cons 11 p)) lst))))
(defun MakeLine (p1 p2 col)
 (entmake (list (cons 0 "LINE") (cons 62 col) (cons 10 p1) (cons 11 p2))))
(defun MakeText (pt str hei col jus / lst)
 (setq lst (list '(0 . "TEXT") (cons 62 col) (cons 10 pt) (cons 40 hei) (cons 1 str) (cons 50 (/ pi 2))))
 (cond
  ((= jus "ML") (setq lst (append lst (list (cons 72 0) (cons 11 pt) (cons 73 2)))))
  ((= jus "MR") (setq lst (append lst (list (cons 72 2) (cons 11 pt) (cons 73 2))))))
 (entmake lst))
 

 anh có thể chỉ giúp em các lệnh để vẽ được ko ạ. bị kém về cái khoản đọc ngôn ngữ lập trình :/


  • 0

#15 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 07 April 2015 - 03:56 PM

Chỉ có 1 lệnh duy nhất: HA3


  • 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.


#16 mtrgnuce

mtrgnuce

    Chưa sử dụng CAD

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

Đã gửi 07 April 2015 - 06:01 PM

Chỉ có 1 lệnh duy nhất: HA3

sao ko xài được vậy anh nhỉ?


  • 0

#17 ngockhuong92bt

ngockhuong92bt

    Chưa sử dụng CAD

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

Đã gửi 07 April 2015 - 07:29 PM

các bác trong diễn đàn..ai có cip in hàng loạt bản vẽ ở layout khung tên là xrets ko cần vẽ khung bao cho e xin với

e mới gia nhập diễn đàn khong có đăng tin lên đc,,,mong các bác giúp đỡ


  • 0

#18 nguyensyanhduc

nguyensyanhduc

    Chưa sử dụng CAD

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

Đã gửi 08 April 2015 - 08:01 AM

sao dùng lệnh HA3 không đc, nhưng mình có cách khác để vẽ, dùng lênh pl sau đó add tọa độ vào là đc, xử lý ở exel 1 chút thôi


  • 1

#19 hoangm

hoangm

    Chưa sử dụng CAD

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

Đã gửi 01 September 2015 - 04:10 PM

13877_lisp_1.png13877_lisp2_1.pngCác bác giúp em với ạ. Cái này là vẽ đĩa cam hình trái tim thôi ạ.
Em cần vẽ 40 cái vòng tròn đường kính 37. Lấy tâm theo các tọa độ X,Y trong excel
Đồng thời rotate các vòng tròn đó theo tâm x0, y0 theo số độ quay lấy từ excel (cột Độ tương ứng)
Còn đường spline tiếp xúc với các đường tròn ấy em vẽ tay cũng được ạ.
 

  • 0

#20 Cao Nam

Cao Nam

    Chưa sử dụng CAD

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

Đã gửi 27 September 2016 - 11:57 AM

bác nào cho em cái hướng dẫn sử dụng với ạ


  • 0