Đến nội dung


Hình ảnh
- - - - -

nhờ các bác trên diễn đàn giúp đở


  • Please log in to reply
10 replies to this topic

#1 cd2k44

cd2k44

    Edu level: li5

  • Members
  • PipPipPipPipPipPipPip
  • 648 Bài viết
Điểm đánh giá: 121 (tàm tạm)

Đã gửi 20 November 2009 - 04:28 PM

mình có đoạn lisp này dùng đưa các tẽt tren bản vẽ về text stlyte 2. tuy nhiên ơ đây mính thấy mới thay đổi được màu, chiều cao và độ rộng giữa các ký tự mà chưa thay đổi được độ nghiệng của text. Nhờ các cao thủ trên diễn đàn giúp đở. Thanks các bác nhiều.
đây là lisp CT2: http://www.cadviet.c.../2/text_uti.lsp
và : http://www.cadviet.c.../untitled_1.rar
  • 0

#2 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 20 November 2009 - 07:36 PM

mình có đoạn lisp này dùng đưa các tẽt tren bản vẽ về text stlyte 2. tuy nhiên ơ đây mính thấy mới thay đổi được màu, chiều cao và độ rộng giữa các ký tự mà chưa thay đổi được độ nghiệng của text. Nhờ các cao thủ trên diễn đàn giúp đở. Thanks các bác nhiều.
đây là lisp CT2: http://www.cadviet.c.../2/text_uti.lsp
và : http://www.cadviet.c.../untitled_1.rar

Chào bạn cd2k44,
Bạn hãy bổ sung đoạn lisp sau vào cái lisp CT2 của bạn nhé:
Bên dưới đoạn:
old (cons 8 (DXF 8 ed))
new (cons 8 "TEXT")
ed (subst new old ed)

Bạn chèn thêm:
d (getreal "\n Hay nhap gia tri goc nghieng tính theo Radian: ")
ed (subst (cons 51 d) (assoc 51 ed) ed)

Vậy là Ok và bạn hãy thử xem nhé.
Chúc bạn thành công.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#3 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 20 November 2009 - 08:00 PM

.......
Bạn chèn thêm:
d (getreal "\n Hay nhap gia tri goc nghieng tính theo Radian: ")
ed (subst (cons 51 d) (assoc 51 ed) ed)

........

Chào bác phamthanhbinh

Tue_NV nghĩ rằng bác nên sửa lại như thế này thì thích hợp hơn :

d (getangle "\n Hay nhap gia tri goc nghieng cho Text : ")
ed (subst (cons 51 d) (assoc 51 ed) ed)


-> kết quả sau hàm getangle : Bác nhập góc thì nó sẽ cho ra giá trị chính xác của radian
  • 0

#4 cd2k44

cd2k44

    Edu level: li5

  • Members
  • PipPipPipPipPipPipPip
  • 648 Bài viết
Điểm đánh giá: 121 (tàm tạm)

Đã gửi 21 November 2009 - 08:08 AM

Chào bác phamthanhbinh

Tue_NV nghĩ rằng bác nên sửa lại như thế này thì thích hợp hơn :

d (getangle "\n Hay nhap gia tri goc nghieng cho Text : ")
ed (subst (cons 51 d) (assoc 51 ed) ed)


-> kết quả sau hàm getangle : Bác nhập góc thì nó sẽ cho ra giá trị chính xác của radian

Cảm ơn bác Tue_NV và bác Phạm Thanh Bình đã giúp đỡ. Các bác cho em hỏi thêm một chút: các gía trị 40,41,51,8 o đây sao lại biểu thị cho chiều cao, độ rộng và màu của text vậy. Các giá trị này là do mình mặc định hay là các tham số của Cad.Lisp này mình muốn chỉnh sửa lại cho phù hợp mà kô hiểu được ý nghĩa các biến tham số.Mong các bác hướng dẫn
  • 0

#5 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 21 November 2009 - 08:48 AM

Cảm ơn bác Tue_NV và bác Phạm Thanh Bình đã giúp đỡ. Các bác cho em hỏi thêm một chút: các gía trị 40,41,51,8 o đây sao lại biểu thị cho chiều cao, độ rộng và màu của text vậy. Các giá trị này là do mình mặc định hay là các tham số của Cad.Lisp này mình muốn chỉnh sửa lại cho phù hợp mà kô hiểu được ý nghĩa các biến tham số.Mong các bác hướng dẫn

Các giá trị 40,41,51,8 chính là mã DXF của Text
DXF = 40 : mã quy định chiều cao của Text (text height)
DXF = 41 : mã quy định độ rộng của Text (text width)
DXF = 50 : mã quy định góc quay của Text (text Rotation)
DXF = 8 : mã quy định Layer của đối tượng (TEXT)
DXF = 62 : mãnày quy định màu của đối tượng

Cái này không phải do ta đặt ra đâu bạn. Lisp đưa ra để quản lý thuộc tính của đối tượng qua những con số. giống như số Chứng minh Nhân Dân của bạn. Muốn tìm địa chỉ của một người nào đó, ở đâu, Công an chỉ cần dựa vào số Chứng minh Nhân Dân mà túm lại 1 cách dễ dàng :cheers: . CAD cũng vậy
  • 0

#6 cd2k44

cd2k44

    Edu level: li5

  • Members
  • PipPipPipPipPipPipPip
  • 648 Bài viết
Điểm đánh giá: 121 (tàm tạm)

Đã gửi 21 November 2009 - 09:32 AM

Các giá trị 40,41,51,8 chính là mã DXF của Text
DXF = 40 : mã quy định chiều cao của Text (text height)
DXF = 41 : mã quy định độ rộng của Text (text width)
DXF = 50 : mã quy định góc quay của Text (text Rotation)
DXF = 8 : mã quy định Layer của đối tượng (TEXT)
DXF = 62 : mãnày quy định màu của đối tượng

Cái này không phải do ta đặt ra đâu bạn. Lisp đưa ra để quản lý thuộc tính của đối tượng qua những con số. giống như số Chứng minh Nhân Dân của bạn. Muốn tìm địa chỉ của một người nào đó, ở đâu, Công an chỉ cần dựa vào số Chứng minh Nhân Dân mà túm lại 1 cách dễ dàng :cheers: . CAD cũng vậy

Bác Tue_NV ơi, sao em sửa Lsp trên thành

d (getangle "10")
ed (subst (cons 51 d) (assoc 51 ed) ed)
như vậy thì nó lại ko chạy nữa vậy bác. Vì em muốn mặc định luôn độ nghiêng của Text là 10 luôn. Và "DXF = 50 : mã quy định góc quay của Text (text Rotation)" mã 50 hay là 51 vậy Bác. Vì em thấy đoạn code bác viet cho em là mã 51.
  • 0

#7 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 21 November 2009 - 10:26 AM

Bác Tue_NV ơi, sao em sửa Lsp trên thành

d (getangle "10")
ed (subst (cons 51 d) (assoc 51 ed) ed)
như vậy thì nó lại ko chạy nữa vậy bác. Vì em muốn mặc định luôn độ nghiêng của Text là 10 luôn. Và "DXF = 50 : mã quy định góc quay của Text (text Rotation)" mã 50 hay là 51 vậy Bác. Vì em thấy đoạn code bác viet cho em là mã 51.

Chào bạn cd2k44,
Bạn lưu ý là các hàm thuộc dòng họ getXXX yêu cầu bạn phải nhập dữ liệu từ trên bàn phím hay con trỏ trên màn hình chứ không phải là giá trị trong chuỗi ghi trên lệnh của bạn đâu.Với cái mã bạn viết thì lisp sẽ chờ bạn nhập cái gì đó vào từ bàn phím rồi mới chịu chạy cơ. Nếu bạn nhập sai dạng dữ liệu thì lisp nó sẽ toi luôn.
Mã 50 là mã góc xoay của dòng text, còn mã 51 là góc nghiêng của text so với đường thẳng trải text bạn ạ. Nó khác nhau đấy nhé.
Nếu bạn muốn góc nghiêng text mặc định là 10 độ thì bạn phải chuyển 10 độ thành radian là: Pi*10/180=0.1745 rad.
Sau đó bạn thay dòng lệnh: d ( getangle " \n Nhap goc nghieng text") bằng dòng : d 0.1745
Vậy là OK.
Nhắc lại để bạn nhớ là trong mã 51, góc nghiêng text phải được tính theo radian.
Nếu bạn thay d 10 thì góc nghiêng text của bạn sẽ không phải là 10 độ mà là 10 rad tức là 10*180 /pi = 572.9577 độ. Và như vậy là text sẽ nằm chổng tu lên chớ chả phải đúng như góc nghiêng bạn cần đâu bạn ạ.
Mong rằng bạn sẽ cố gắng tìm hiểu về lisp kỹ hơn nữa để có thể tự giải quyết được những yêu cầu đơn giản như trên.
Chúc bạn thành công.

Bài được edit bởi Phạm Thanh Bình hồi 11 giờ 12 phút ngày 21/11/2009.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#8 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 21 November 2009 - 10:51 AM

Chào bác phamthanhbinh

Tue_NV nghĩ rằng bác nên sửa lại như thế này thì thích hợp hơn :

d (getangle "\n Hay nhap gia tri goc nghieng cho Text : ")
ed (subst (cons 51 d) (assoc 51 ed) ed)


-> kết quả sau hàm getangle : Bác nhập góc thì nó sẽ cho ra giá trị chính xác của radian

Cám ơn bác Tue_nv về cái hàm getangle này nhé. Thực tình mình chưa có kinh nghiệm nhiều về nó.
Chúc bác luôn mạnh khỏe và vui.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#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 21 November 2009 - 11:00 AM

Theo cái sự biết của em hồi giờ thì muốn đổi từ radian sang độ thì phải nhân với 180 và chia pi thì nó mới đúng đấy bác Bình à!

Đúng vậy bác Duy ơi, mình lẩm cẩm rối vì nhầm béng 10rad với 10 pi. Hề hề, để mình sửa lại bài pót.
Cám ơn bác nhiều nhiều.
  • 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 cd2k44

cd2k44

    Edu level: li5

  • Members
  • PipPipPipPipPipPipPip
  • 648 Bài viết
Điểm đánh giá: 121 (tàm tạm)

Đã gửi 21 November 2009 - 11:53 AM

Chào bạn cd2k44,
Bạn lưu ý là các hàm thuộc dòng họ getXXX yêu cầu bạn phải nhập dữ liệu từ trên bàn phím hay con trỏ trên màn hình chứ không phải là giá trị trong chuỗi ghi trên lệnh của bạn đâu.Với cái mã bạn viết thì lisp sẽ chờ bạn nhập cái gì đó vào từ bàn phím rồi mới chịu chạy cơ. Nếu bạn nhập sai dạng dữ liệu thì lisp nó sẽ toi luôn.
Mã 50 là mã góc xoay của dòng text, còn mã 51 là góc nghiêng của text so với đường thẳng trải text bạn ạ. Nó khác nhau đấy nhé.
Nếu bạn muốn góc nghiêng text mặc định là 10 độ thì bạn phải chuyển 10 độ thành radian là: Pi*10/180=0.1745 rad.
Sau đó bạn thay dòng lệnh: d ( getangle " \n Nhap goc nghieng text") bằng dòng : d 0.1745
Vậy là OK.
Nhắc lại để bạn nhớ là trong mã 51, góc nghiêng text phải được tính theo radian.
Nếu bạn thay d 10 thì góc nghiêng text của bạn sẽ không phải là 10 độ mà là 10 rad tức là 10*180 = 572.9577 độ. Và như vậy là text sẽ nằm chổng tu lên chớ chả phải đúng như góc nghiên bạn cần đâu bạn ạ.
Mong rằng bạn sẽ cố gắng tìm hiểu về lisp kỹ hơn nữa để có thể tự giải quyết được những yêu cầu đơn giản như trên.
Chúc bạn thành công.

Bài được edit bởi Phạm Thanh Bình hồi 11 giờ 12 phút ngày 21/11/2009.

cảm ơn bác thanh bình đã chỉ bảo, đúng là mình yếu lisp quá nên đang muốn tìm hiểu. Mình sẽ có gắng học hỏi để tự giải quyết những vấn đề đơn giản này, có gì không biết mình sẽ lên diễn đàn hỏi thêm các bác. Thanks các bác nhiều
  • 0

#11 master_worse

master_worse

    biết lệnh offset

  • Advance Member
  • PipPipPip
  • 170 Bài viết
Điểm đánh giá: 87 (tàm tạm)

Đã gửi 21 November 2009 - 11:54 AM

Bác Tue_NV ơi, sao em sửa Lsp trên thành

d (getangle "10")
ed (subst (cons 51 d) (assoc 51 ed) ed)
như vậy thì nó lại ko chạy nữa vậy bác. Vì em muốn mặc định luôn độ nghiêng của Text là 10 luôn. Và "DXF = 50 : mã quy định góc quay của Text (text Rotation)" mã 50 hay là 51 vậy Bác. Vì em thấy đoạn code bác viet cho em là mã 51.


Nếu là 10 độ thì chuyển sang radian bằng hàm (cvunit 10 "DEGREE" "RADIAN")
bạn làm thế này xem:

d (cvunit 10 "DEGREE" "RADIAN")
ed (subst (cons 51 d) (assoc 51 ed) ed)
  • 1

Ngu dốt không đáng thẹn bằng thiếu ý chí học hỏi


Tri thức làm người ta khiêm tốn, ngu si làm người ta kiêu ngạo (Ngạn ngữ Anh)