Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] Viết lisp vẽ 1 đường Line có ghi luôn kích thước của Line đó


  • Please log in to reply
16 replies to this topic

#1 tuanninh

tuanninh

    Chưa sử dụng CAD

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

Đã gửi 23 October 2011 - 01:24 PM

hiện mình vừa vẽ 1 đường thẳng vừa đo kích thước rất mất time
bạn nào biết viết lisp viết cho mình 1 lisp chỉ cần vẽ đường thẳng thui mà có luôn kích thước ở đó
hộ mình nha . Thank
  • 0

#2 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 23 October 2011 - 03:59 PM

hiện mình vừa vẽ 1 đường thẳng vừa đo kích thước rất mất time
bạn nào biết viết lisp viết cho mình 1 lisp chỉ cần vẽ đường thẳng thui mà có luôn kích thước ở đó
hộ mình nha . Thank

Y/c của bạn không khó, nhưng nếu bạn nói rõ hơn thì sẽ dễ viết, chứ viết cho trường hợp tổng quát thì hơi rắc rối, mà sử dụng cũng nhiêu khê. Cụ thể:
- Vị trí của text thể hiện kích thước sẽ nằm ở đâu trên line, height+width+font+layer+v.v... của text như thế nào, phương của nó, canh lề của nó.v.v và v.v...
Thân thương!
  • 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.


#3 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 24 October 2011 - 07:16 AM

Mình đề xuất là dùng dim hiện hành để đo. Lisp có lựa chọn và mặc định nếu người dùng không thay đổi hai giá trị Phía đặt dim và khoảng cách so với đường thẳng
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#4 tuanninh

tuanninh

    Chưa sử dụng CAD

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

Đã gửi 25 October 2011 - 10:57 PM

Y/c của bạn không khó, nhưng nếu bạn nói rõ hơn thì sẽ dễ viết, chứ viết cho trường hợp tổng quát thì hơi rắc rối, mà sử dụng cũng nhiêu khê. Cụ thể:
- Vị trí của text thể hiện kích thước sẽ nằm ở đâu trên line, height+width+font+layer+v.v... của text như thế nào, phương của nó, canh lề của nó.v.v và v.v...
Thân thương!

-???...liên quan đến nhiều vấn đề vậy hả bạn ?. Text cao 4mm và song song với line cách line 1,5mm, font +layer thì tự chọn đc ko nếu ko thì cho về 1font và 1 layer . Mình ko cần đường phương , canh lề ...vv bỏ hết đi , để mỗi số chiều dài của line thui
Ah còn nữa nếu mình muốn thay đổi chiều dài line thì kích thước cũng thay đổi theo ( nếu đc thì càng tốt)
  • 0

#5 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 26 October 2011 - 04:05 PM

Y/c của bạn không khó, nhưng nếu bạn nói rõ hơn thì sẽ dễ viết, chứ viết cho trường hợp tổng quát thì hơi rắc rối, mà sử dụng cũng nhiêu khê. Cụ thể:
- Vị trí của text thể hiện kích thước sẽ nằm ở đâu trên line, height+width+font+layer+v.v... của text như thế nào, phương của nó, canh lề của nó.v.v và v.v...
Thân thương!

-???...liên quan đến nhiều vấn đề vậy hả bạn ?. Text cao 4mm và song song với line cách line 1,5mm, font +layer thì tự chọn đc ko nếu ko thì cho về 1font và 1 layer . Mình ko cần đường phương , canh lề ...vv bỏ hết đi , để mỗi số chiều dài của line thui
Ah còn nữa nếu mình muốn thay đổi chiều dài line thì kích thước cũng thay đổi theo ( nếu đc thì càng tốt)

Xem cái này thế nào: Lệnh là LKT


(defun c:lkt ( )
(command "undo" "be")
(command "-style" "ktdt" "VNI-HELVE" "0" "1" "0" "n" "n")
(if (null dolora)(setq dolora "4"))
(Setq temp T)
(While temp
(setq a (strcat "\nD lon text hien hanh la (" dolora ") /<Diem dau tien>: "))
(Initget "d D")
(setq str (getpoint a))
(Cond
((= str "d") (setq dolora (getstring (strcat"\nDo lon text <" dolora "> :"))))
((= str "D") (setq dolora (getstring (strcat"\nDo lon text <" dolora "> :"))))
(Progn
(Setq a str)
(setq temp nil)
)
)
)

(setq b (getpoint a"\nChon diem tiep theo: "))
(setq luubatdiem (getvar "osmode"))
(setvar "osmode" 0)
(setq doclora (atof dolora))
(setq gocxeo(angle a B))
(setq daiab (distance a B))
(setq c (polar a gocxeo (/ daiab 2)))
(setq d (polar c (+ gocxeo (/ pi 2)) (/ doclora 4)))

(command ".line" a b "")
(command "text" "j" "c" c doclora b (rtos daiab 2 2) "")
(command ".move" "last" "" c d)
(cond
((> gocxeo (/ pi 2)) (command ".rotate" "last" "" c 180))
)
(setvar "osmode" luubatdiem)
(command "undo" "end")
(Princ)
)

  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#6 xddiron

xddiron

    biết zoom

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

Đã gửi 26 October 2011 - 05:54 PM

anh có thể sửa lại lisp sao cho đường dim có đầy đủ đường gióng,đường kéo dài không ah
thank anh
  • 0

#7 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 26 October 2011 - 10:30 PM

anh có thể sửa lại lisp sao cho đường dim có đầy đủ đường gióng,đường kéo dài không ah
thank anh

Xem cái này xem: lệnh là LKTD, lisp dùng dim hiện hành để đánh nhé.


(defun c:lktd ( )
(command "undo" "be")
(if (null dolora)(setq dolora "4"))
(Setq temp T)
(While temp
(setq a (strcat "\nKhoang cach dim hien hanh la (" dolora ") /<Diem dau tien>: "))
(Initget "k K")
(setq str (getpoint a))
(Cond
((= str "k") (setq dolora (getstring (strcat"\nKhoang cach dim voi line <" dolora "> :"))))
((= str "K") (setq dolora (getstring (strcat"\nKhoang cach dim voi line <" dolora "> :"))))
(Progn
(Setq a str)
(setq temp nil)
)
)
)

(setq b (getpoint a"\nChon diem tiep theo: "))
(setq luubatdiem (getvar "osmode"))
(setvar "osmode" 0)
(setq doclora (atof dolora))
(setq gocxeo(angle a B))
(setq daiab (distance a B))
(setq c (polar a gocxeo (/ daiab 2)))
(setq d (polar c (+ gocxeo (/ pi 2)) doclora))

(command ".line" a b "")
(command "DIMALIGNED" a b d)
(cond
((> gocxeo (/ pi 2)) (command ".rotate" "last" "" c 180))
)
(setvar "osmode" luubatdiem)
(command "undo" "end")
(Princ)
)

  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#8 banbe0274

banbe0274

    biết vẽ pline

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

Đã gửi 27 October 2011 - 06:01 PM

Bạn có thể thêm chức năng đường Polyline nữa được không . Cám ơn bạn
  • 0

#9 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 27 October 2011 - 09:46 PM

Bạn có thể thêm chức năng đường Polyline nữa được không . Cám ơn bạn

Thêm vào cái trên hay cái dưới?
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#10 banbe0274

banbe0274

    biết vẽ pline

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

Đã gửi 28 October 2011 - 07:31 PM

Bạn thêm vào code dưới nhé...
  • 0

#11 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 28 October 2011 - 10:59 PM

Bạn thêm vào code dưới nhé...

Cái này thì sao.
Lệnh: PLKT

(defun c:plkt ( )
(command "undo" "be")
(if (null dolora)(setq dolora "4"))
(Setq temp T)
(While temp
(setq a (strcat "\nKhoang cach dim hien hanh la (" dolora ") /<Diem dau tien>: "))
(Initget "k K")
(setq str (getpoint a))
(Cond
((= str "k") (setq dolora (getstring (strcat"\nKhoang cach dim voi line <" dolora "> :"))))
((= str "K") (setq dolora (getstring (strcat"\nKhoang cach dim voi line <" dolora "> :"))))
(Progn
(Setq a str)
(setq temp nil)
)
)
)

(setq b (getpoint a"\nChon diem tiep theo: "))
(setq luubatdiem (getvar "osmode"))
(setvar "osmode" 0)
(setq doclora (atof dolora))
(setq gocxeo(angle a B))
(setq daiab (distance a B))
(setq c (polar a gocxeo (/ daiab 2)))
(setq d (polar c (+ gocxeo (/ pi 2)) doclora))

(command ".pline" a b "")
(setq plhoinay (entlast))
(command "DIMALIGNED" a b d)
(cond
((> gocxeo (/ pi 2)) (command ".rotate" "last" "" c 180))
)
(setq a B)
(setvar "osmode" luubatdiem)
(While (setq b (getpoint a"\nChon diem tiep theo: <Enter de ket thuc> "))
(setq luubatdiem (getvar "osmode"))
(setvar "osmode" 0)
(setq doclora (atof dolora))
(setq gocxeo(angle a B))
(setq daiab (distance a B))
(setq c (polar a gocxeo (/ daiab 2)))
(setq d (polar c (+ gocxeo (/ pi 2)) doclora))

(command ".pline" a b "")
(command "pedit" "m" "L" plhoinay "" "j" "0" "")
(setq plhoinay (entlast))
(command "DIMALIGNED" a b d)
(cond
((> gocxeo (/ pi 2)) (command ".rotate" "last" "" c 180))
)
(setq a B)
(setvar "osmode" luubatdiem)
)
(command "undo" "end")
(Princ)
)

  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#12 banbe0274

banbe0274

    biết vẽ pline

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

Đã gửi 29 October 2011 - 08:57 PM

Đúng ý mình rồi cám ơn bạn nhé. Chúc bạn và gia đình luôn mạnh khoẻ.
  • 0

#13 phuquang113

phuquang113

    biết vẽ line

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

Đã gửi 07 November 2011 - 11:55 AM

Bác Duy ơi em cần cái lisp này lắm nhưng bác có thể thêm vào chức năng chọn độ lớn cho text ghi kích thước không chứ mặc định là 4 thì nhiều khi to khi nhỏ nên bản vẽ không đẹp mà khi hiệu chỉnh lại chữ nhỏ thì khoảng cách chữ với đường thẳng lại xa quá. Hy vọng bác giúp. Chúc bác sức khỏe!
  • 0

#14 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 07 November 2011 - 01:46 PM

Bác Duy ơi em cần cái lisp này lắm nhưng bác có thể thêm vào chức năng chọn độ lớn cho text ghi kích thước không chứ mặc định là 4 thì nhiều khi to khi nhỏ nên bản vẽ không đẹp mà khi hiệu chỉnh lại chữ nhỏ thì khoảng cách chữ với đường thẳng lại xa quá. Hy vọng bác giúp. Chúc bác sức khỏe!

Khi dùng lisp nó hỏi:
D lon text hien hanh la (4) /<Diem dau tien>:
Lúc này bạn không chọn điểm vội và gỏ d enter thì nó cho bạn nhập lại độ lớn text. (lưu ý khoảng cách text và line là 1/4 độ cao text).
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#15 phuquang113

phuquang113

    biết vẽ line

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

Đã gửi 07 November 2011 - 02:24 PM

À vậy thì rõ rồi! Nhưng mà sao text nó lại nằm dưới đường thẳng vậy bác? có cách nào text luôn nằm trên đường thẳng không?
  • 0

#16 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 07 November 2011 - 04:58 PM

À đang bị lổi 1/4 nhưng bận quá nên phải tháng nửa mới mò đến. Hay bạn tự mò chút chổ
(cond
((> gocxeo (/ pi 2)) (command ".rotate" "last" "" c 180))
)
xem.
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#17 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 November 2011 - 05:47 PM

À đang bị lổi 1/4 nhưng bận quá nên phải tháng nửa mới mò đến. Hay bạn tự mò chút chổ
(cond
((> gocxeo (/ pi 2)) (command ".rotate" "last" "" c 180))
)
xem.

Hề hề hề,
Tranh thủ lúc bác Duy bận, dây máu ăn phần tí hè????
Thay:
(> gocxeo (/ pi 2))
bằng:
(and (> gocxeo (/ pi 2) (< gocxeo (* (/ pi 2) 3)))
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.