Đến nội dung


Hình ảnh
- - - - -

[ yêu cầu ] viết lisp vẽ line lấy giá trị từ text có sẵn


  • Please log in to reply
12 replies to this topic

#1 duongvanthuan

duongvanthuan

    biết pan

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

Đã gửi 06 July 2012 - 07:56 AM

các bác có thể viết giùm mình một đoạn code theo yêu cầu này không vì mình là thành viên mới nên không am hiểu sâu vê lisp
- Nhập lệnh
- chọn điểm bắt đầu.
- chọn TEXT có sẵn trong bản vẽ (Hoặc có thể nhập tay), nó sẽ vẽ 1 đoạn thẳng đứng lên trên có chiều dài bằng giá trị TEXT,
- chọn giá trị khoảng cách theo phương ngang từ trái sang phải từ TEXT có sẵn trong bản vẽ (Hoặc có thể nhập tay)
- toàn bộ quá trình này được lặp lại như cũ.
- enter để kết thúc lệnh
cảm ơn các bác trước nha.
  • 0

#2 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 06 July 2012 - 07:59 AM

Chắc lại vẽ gióng trắc ngang. Trên 4room có nhiều giải pháp cho việc này lắm bạn ạ ^^
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3 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 06 July 2012 - 11:25 AM

các bác có thể viết giùm mình một đoạn code theo yêu cầu này không vì mình là thành viên mới nên không am hiểu sâu vê lisp
- Nhập lệnh
- chọn điểm bắt đầu.
- chọn TEXT có sẵn trong bản vẽ (Hoặc có thể nhập tay), nó sẽ vẽ 1 đoạn thẳng đứng lên trên có chiều dài bằng giá trị TEXT,
- chọn giá trị khoảng cách theo phương ngang từ trái sang phải từ TEXT có sẵn trong bản vẽ (Hoặc có thể nhập tay)
- toàn bộ quá trình này được lặp lại như cũ.
- enter để kết thúc lệnh
cảm ơn các bác trước nha.

Hề hề hề,
Chả biết là tắc dọc hay trắc ngang hay là trắc ..... trở. Song nếu bạn klho6ng gửi bản vẽ thể hiện rõ cái đã có, cái yêu cầu và cái kết quả thì đành Hãy đợi đấy vậy.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#4 duongvanthuan

duongvanthuan

    biết pan

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

Đã gửi 06 July 2012 - 12:29 PM

đúng là mình đang muốn vẽ trắc ngang. từ bản số liệu cao độ, và khoảng cách đã có.
các bác xem bản vẽ đính kèm .
  • 0

#5 duongvanthuan

duongvanthuan

    biết pan

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

Đã gửi 06 July 2012 - 12:30 PM

http://www.cadviet.c...2664_ban_ve.dwg
  • 0

#6 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 06 July 2012 - 03:49 PM

http://www.cadviet.c...2664_ban_ve.dwg

Hề hề hề,
Đây là lisp mình nháp thử xem có đúng yêu cầu của bạn hay không. Lưu ý bạn là các text trong bảng thống kê của bạn phải được đặt tương đối thẳng hàng với nhau, chớ có nhảy lambada nhé. Mình không vẽ trắc dọc theo kiểu nhập từng nhát một như bạn vì như vậy thì có khi vẻ thẳng bằng tay nhanh hơn nhiều.
Lisp này yêu cầu bạn nhập vùng chọn tức là vùng chỉ chứa toàn các số liệu đã được sắp xếp thành bảng tương tự như cái bạn đã post. Các số liệu chiều cao và khoảng cách phải tương ứng với nhau trong bảng, nếu không lisp sẽ vẽ sai. Cách nhập số liệu đúng như cách nhập trong bảng mà bạn đã post. Nếu thay đổi cách nhập thì lisp cũng sẽ vẽ sai đấy.
Bạn hãy thử và cho biết ý kiến.


(defun c:vtd ( / oldos p1 p2 tm1 tm2 p0 cd kc sstl tl1 tl2 etm xlist ylst p h)
(vl-load-com)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(command "undo" "be")
(setq p1 (getpoint "\n Chon diem goc duoi ben trai bang so lieu")
p2 (getpoint p1 "\n Chon diem goc ten ben phai bang so lieu")
tm1 (car (entsel "\n Chon text cao do mau"))
tm2 (car (entsel "\n Chon text khoang cach mau"))
p0 (getpoint "\n Chon diem bat dau ve")
cd (caddr (assoc 10 (entget tm1)))
kc (caddr (assoc 10 (entget tm2)))
sstl (acet-ss-to-list (ssget "w" p1 p2 (list (cons 0 "*text"))))
tl1 (list)
tl2 (list)
)
(foreach tm sstl
(setq etm (entget tm))
(if (equal cd (caddr (assoc 10 etm)) 0.1)
(setq tl1 (append tl1 (list (list (cdr (assoc 10 etm)) (atof (cdr (assoc 1 etm))) ))))
)
(if (equal kc (caddr (assoc 10 etm)) 0.1)
(setq tl2 (append tl2 (list (list (cdr (assoc 10 etm)) (atof (cdr (assoc 1 etm))) ))))
)
)
(setq tl1 (vl-sort tl1 '(lambda (x y) (< (caar x) (caar y))))
tl2 (vl-sort tl2 '(lambda (x y) (< (caar x) (caar y))))
ylst (list)
xlst (list 0)
)
(foreach y tl1
(setq ylst (append ylst (list (cadr y))))
)
(foreach x tl2
(setq xlst (append xlst (list (cadr x))))
)
(if (= (length ylst) (length xlst))
(progn
(setq n (length ylst) i 0 h (cadr p0))
(command "pline" p0
(while (< i n)
(setq p (list (+ (car p0) (nth i xlst)) (+ h (nth i ylst)) 0.0) )
(command p)
(setq i (1+ i) p0 p)
)
(command "")
)
)
(alert "\n So cao do va so khoang cach khong bang nhau. Hay kiem tra lai. ")
)
(command "undo" "e")
(setvar "osmode" oldos)
(Princ )

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

#7 duongvanthuan

duongvanthuan

    biết pan

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

Đã gửi 06 July 2012 - 05:18 PM

cảm ơn bác Thanh Bình Nhiều nhiều nha.
nhưng có điều lisp này khi chạy thì không có các đường dóng cao độ bác ơi
bác thêm cho mình các đường dóng cao độ nữa nhe.
  • 0

#8 duongvanthuan

duongvanthuan

    biết pan

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

Đã gửi 07 July 2012 - 10:42 AM

cảm ơn bác Thanh Bình Nhiều nhiều nha.
nhưng có điều lisp này khi chạy thì không có các đường dóng cao độ bác ơi
bác thêm cho mình các đường dóng cao độ nữa nhe.
  • 0

#9 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 07 July 2012 - 02:42 PM

cảm ơn bác Thanh Bình Nhiều nhiều nha.
nhưng có điều lisp này khi chạy thì không có các đường dóng cao độ bác ơi
bác thêm cho mình các đường dóng cao độ nữa nhe.

Hề hề hề,
Thêm đường dóng cao độ, rồi thêm đường chuẩn, rồi thêm các text ghi khoảng cách và cao độ, rồi thêm ......... thoải mái phải không bạn????
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#10 duongvanthuan

duongvanthuan

    biết pan

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

Đã gửi 07 July 2012 - 03:57 PM

Hề hề hề,
Thêm đường dóng cao độ, rồi thêm đường chuẩn, rồi thêm các text ghi khoảng cách và cao độ, rồi thêm ......... thoải mái phải không bạn????

đợi tin tốt từ bác thanh bình
  • 0

#11 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 07 July 2012 - 04:07 PM

đợi tin tốt từ bác thanh bình

Hề hề hề,
Tốt sao được khi chửa biết bạn cần gì????
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#12 duongvanthuan

duongvanthuan

    biết pan

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

Đã gửi 26 August 2012 - 01:11 PM

mình cần thêm đường dóng cao độ vào mức so sánh nữa thì lisp này ok
  • 0

#13 VoHoan

VoHoan

    biết lệnh move

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

Đã gửi 26 August 2012 - 03:09 PM

.....
- chọn TEXT có sẵn trong bản vẽ (Hoặc có thể nhập tay), nó sẽ vẽ 1 đoạn thẳng đứng lên trên có chiều dài bằng giá trị TEXT,
- chọn giá trị khoảng cách theo phương ngang từ trái sang phải từ TEXT có sẵn trong bản vẽ (Hoặc có thể nhập tay)
.....

Mình nghĩ nếu bạn mà nhập số liệu từ đầu như trong bảng thì nên nhập trong nova đế xuất ra file số liệu ".ntd" thì chuyên nghiệp hơn dùng lisp (chắc bạn là dân cầu đường?).
  • 0