Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
truongbv

Vẽ 1 đường Line(có 2 đoạn) sau đó cho phép người dùng nhập ký tự vào 2 text1, text2

Các bài được khuyến nghị

Chào anh em.

Bác có thể gúp tôi viết đoạn Lisp có yêu cầu như sau: (yêu cầu ở trong vòng tròn mầu vàng)

http://www.cadviet.com/upfiles/A_A1.dwg

vẽ 1 đường Line(có 2 đoạn) sau đó cho phép người dùng nhập ký tự vào 2 text1, text2

Bạn chưa nói rõ thuộc tính của đường Line và text của bạn (Layer, color)

Đoạn Lisp sau sẽ vẽ 2 đường Line cho bạn sau đó cho phép người dùng nhập ký tự vào 2 text1, text2

Text1 là text trên. Text2 là text dưới.

;;
(defun gocve( goc)
(if (and (> goc 90.0) ()
;;
(defun c:LTE()
(prompt "\n Ve 2 duong Line :")
(setq a (getpoint "\n Nhap diem dau cua Line :")
b (getpoint a "\n Nhap diem cuoi cua Line :")
ang (/ (* (angle a b) 180) pi)
c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))

(Command "Line" a b "")
(Command "Line" a b "")

(setq ct (getstring "\n Nhap vao chu tren :")
cd (getstring "\n Nhap vao chu duoi :"))

(setq tb (tblsearch "style" "Arial"))
(if (= tb nil)
(Command "style" "arial" "Arial.ttf" "0" "1" "0" "n" "n")
)
(if (/= tb nil)
(progn
(setq hei (cdr (assoc 42 tb))
sty (cdr (assoc 2 tb))
fo (cdr (assoc 3 tb)))

(Command "style" fo "0" "" "" "n" "n")
(Command "text" "j" "BC" c hei (gocve ang) ct)
(Command "text" "j" "TC" c hei (gocve ang) cd)
)
)
(Princ)
)

Hy vọng bạn hài lòng.

Chúc thành công :undecided:

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Bạn chưa nói rõ thuộc tính của đường Line và text của bạn (Layer, color)

Đoạn Lisp sau sẽ vẽ 2 đường Line cho bạn sau đó cho phép người dùng nhập ký tự vào 2 text1, text2

Text1 là text trên. Text2 là text dưới.

;;
(defun gocve( goc)
(if (and (> goc 90.0) (< goc 270.0)) (+ goc 180.0) goc)
)
;;
(defun c:LTE()
(prompt "\n Ve 2 duong Line :")
(setq a (getpoint "\n Nhap diem dau cua Line :")
b (getpoint a "\n Nhap diem cuoi cua Line :")
ang (/ (* (angle a b) 180) pi)
c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))

(Command "Line" a b "")
(Command "Line" a b "")

(setq ct (getstring "\n Nhap vao chu tren :")
cd (getstring "\n Nhap vao chu duoi :"))

(setq tb (tblsearch "style" "Arial"))
(if (= tb nil)
(Command "style" "arial" "Arial.ttf" "0" "1" "0" "n" "n")
)
(if (/= tb nil)
(progn
(setq hei (cdr (assoc 42 tb))
sty (cdr (assoc 2 tb))
fo (cdr (assoc 3 tb)))

(Command "style" fo "0" "" "" "n" "n")
(Command "text" "j" "BC" c hei (gocve ang) ct)
(Command "text" "j" "TC" c hei (gocve ang) cd)
)
)
(Princ)
)

Hy vọng bạn hài lòng.

Chúc thành công :undecided:

Thanks bác

bác vẫn chưa hiểu ý của mình rồi, bác nhìn bản vẽ mình gủi links đó

vẽ line1 ->line2 sau đó hiển thị text1, text2

lưu ý line2 phải song song với line được chọn( line1 trỏ vào line được chọn)

còn thuộc tính của line, text thì để mặc định

cảm ơn anh em trong diễn đàm qua tâm

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Chào anh em.

Bác có thể gúp tôi viết đoạn Lisp có yêu cầu như sau: (yêu cầu ở trong vòng tròn mầu vàng)

http://www.cadviet.com/upfiles/A_A1.dwg

vẽ 1 đường Line(có 2 đoạn) sau đó cho phép người dùng nhập ký tự vào 2 text1, text2

Bạn truongbv ơi,

Rất tiếc là không giúp gì bạn được vì không thể mở cái bản vẽ của bạn. Nếu có thể bạn hãy post bản vẽ ở các version

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Thanks bác

bác vẫn chưa hiểu ý của mình rồi, bác nhìn bản vẽ mình gủi links đó

vẽ line1 ->line2 sau đó hiển thị text1, text2

lưu ý line2 phải song song với line được chọn( line1 trỏ vào line được chọn)

còn thuộc tính của line, text thì để mặc định

cảm ơn anh em trong diễn đàn qua tâm

Chào bạn truongbv

Line1, line2, Line được chọn bạn có thể hiện trong hình vẽ đâu?

Không hiểu Line1, line2, Line được chọn là gì thì làm sao có thể viết đúng ý bạn được?

Lúc đầu mình nghĩ Line1; Line2 là đường trùng nhau màu xanh và đỏ cơ đấy.

Bạn hãy nói rõ Line1, line2, Line được chọn thì mới có thể viết Lisp đúng ý bạn được

 

To PhamthanhBinh : Đã có phần mềm tích hợp trên menu của CAD2004 và các CAD khác có thể mở mọi Version của CAD và còn có thể Save ở mọi Version của CAD. Phần mềm này có tên là DWGgateway. Khi cài xong sẽ tích hợp trên thanh menu của CAD. Diễn đàn mình đã có bài viết nói về nó đấy. Bác xem ở đây : Add on trong autocad mở được tất cả mọi version của cad

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Chào bạn truongbv

Line1, line2, Line được chọn bạn có thể hiện trong hình vẽ đâu?

Không hiểu Line1, line2, Line được chọn là gì thì làm sao có thể viết đúng ý bạn được?

Lúc đầu mình nghĩ Line1; Line2 là đường trùng nhau màu xanh và đỏ cơ đấy.

Bạn hãy nói rõ Line1, line2, Line được chọn thì mới có thể viết Lisp đúng ý bạn được

 

To PhamthanhBinh : Đã có phần mềm tích hợp trên menu của CAD2004 và các CAD khác có thể mở mọi Version của CAD và còn có thể Save ở mọi Version của CAD. Phần mềm này có tên là DWGgateway. Khi cài xong sẽ tích hợp trên thanh menu của CAD. Diễn đàn mình đã có bài viết nói về nó đấy. Bác xem ở đây : Add on trong autocad mở được tất cả mọi version của cad

 

Thanks All anh em đã quan tâm.

các bác có thể xem hinh sau:http://www.cadviet.com/upfiles/A_A1_2000.dwg

ảnh: http://www.cadviet.com/upfiles/Ve_line.jpg

1.Vẽ line1->line2 và cho phép người dùng nhập ký tự vào text1 và text2

2.đường line2 phải song song line và góc (line, line1) bằng 35 độ

mầu của line1, line2, text1, text2 tùy chọn

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Thanks All anh em đã quan tâm.

các bác có thể xem hinh sau:http://www.cadviet.com/upfiles/A_A1_2000.dwg

ảnh: http://www.cadviet.com/upfiles/Ve_line.jpg

1.Vẽ line1->line2 và cho phép người dùng nhập ký tự vào text1 và text2

2.đường line2 phải song song line và góc (line, line1) bằng 35 độmầu của line1, line2, text1, text2 tùy chọn

Đây bạn :

Điều kiện 2 : Chỉ cần Line2 song song với line là đủ rồi bạn ạ

Bạn nên rút kinh nghiệm khi post bài phải nói rõ ràng nhé :

;;
(defun gocve( goc)
(if (and (> goc 90.0) ()
;;
(defun c:LTE(/ c ent sp ep angl a di b ang d ct cd tb hei sty fo)
(vl-load-com)
(setq ent (entsel "\n Chon duong Line:")
c (cadr ent)
ent (car ent)
sp (vlax-curve-getStartPoint ent)
ep (vlax-curve-getEndPoint ent)
angl (angle ep sp)

a (getpoint c "\n Pick diem cuoi cua Line 1 :")
di (getdist a "\n Pick diem cuoi cua Line 2 :") 

b (polar a angl di)
ang (/ (* angl 180) pi))

(if ((setq ang (+ (/ (* angl 180) pi) 180)
))

(setq d (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))


(Command "Line" c a "")
(Command "Line" a b "")

(setq ct (getstring "\n Nhap vao chu tren :")
cd (getstring "\n Nhap vao chu duoi :"))

(setq tb (tblsearch "style" "Arial"))
(if (= tb nil)
(progn
(Command "style" "arial" "Arial.ttf" "0" "1" "0" "n" "n")
(setq hei (cdr (assoc 42 tb))
sty (cdr (assoc 2 tb))
fo (cdr (assoc 3 tb)))
)
)
(if (/= tb nil)
(progn
(setq hei (cdr (assoc 42 tb))
sty (cdr (assoc 2 tb))
fo (cdr (assoc 3 tb)))
)
)
(Command "style" fo "0" "" "" "n" "n")
(Command "text" "j" "BC" d hei (gocve ang) ct)
(Command "text" "j" "TC" d hei (gocve ang) cd)

(Princ)
)

Chúc thành công. :undecided:

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Chào bạn truongbv

Line1, line2, Line được chọn bạn có thể hiện trong hình vẽ đâu?

Không hiểu Line1, line2, Line được chọn là gì thì làm sao có thể viết đúng ý bạn được?

Lúc đầu mình nghĩ Line1; Line2 là đường trùng nhau màu xanh và đỏ cơ đấy.

Bạn hãy nói rõ Line1, line2, Line được chọn thì mới có thể viết Lisp đúng ý bạn được

 

To PhamthanhBinh : Đã có phần mềm tích hợp trên menu của CAD2004 và các CAD khác có thể mở mọi Version của CAD và còn có thể Save ở mọi Version của CAD. Phần mềm này có tên là DWGgateway. Khi cài xong sẽ tích hợp trên thanh menu của CAD. Diễn đàn mình đã có bài viết nói về nó đấy. Bác xem ở đây : Add on trong autocad mở được tất cả mọi version của cad

Cám ơn bác Tue_NV lắm lắm.

Vì mình toàn học mót nên kiến thức về các phần mềm ít lắm, toàn là những cái đã thông dụng thối, chứ đi vào vọc lung tung thì chưa dám, chỉ sợ nó làm tiêu mất cái mình đang có. Do nhát vậy nên nhiều khi bí tị. Vô diễn đàn được các bác chỉ thêm nhiều phần mềm có ích, mình rất cám ơn. Hy vọng các bác thông cảm giúp mình nhiều hiều nhé. Thanks bác nhiều.

Mình đã cài cái DWG gateway nhưng sao chỉ mở được cái bản vẽ bạn Truongbv gửi lần thứ hai thôi, cái bạn ấy gửi lần đầu vẫn không mở được bác Tue_nv ạ. Bác chỉ giúp mình nhé.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Cám ơn bác Tue_NV lắm lắm.

Vì mình toàn học mót nên kiến thức về các phần mềm ít lắm, toàn là những cái đã thông dụng thối, chứ đi vào vọc lung tung thì chưa dám, chỉ sợ nó làm tiêu mất cái mình đang có. Do nhát vậy nên nhiều khi bí tị. Vô diễn đàn được các bác chỉ thêm nhiều phần mềm có ích, mình rất cám ơn. Hy vọng các bác thông cảm giúp mình nhiều hiều nhé. Thanks bác nhiều.

Mình đã cài cái DWG gateway nhưng sao chỉ mở được cái bản vẽ bạn Truongbv gửi lần thứ hai thôi, cái bạn ấy gửi lần đầu vẫn không mở được bác Tue_nv ạ. Bác chỉ giúp mình nhé.

Chào Bác PhamThanhBinh

Cái bản vẽ bạn Truongbv là bản vẽ mà bạn ấy đã lưu CAD2000 nên mở được.

Còn bản vẽ đầu tiên bạn ấy gửi lưu ở CAD đời mới. nên với CAD đời cũ sử dụng DWGgateway mà đọc.

Cách sử dụng khá đơn giản : Khi cài xong DWGgateway thì DWGgateway sẽ tích hợp trên menu của CAD -> Bạn chọn Open Any DWG Version -> Hiện lên hộp thoại Open -> Bạn chọn File -> open

Bác xem hình vẽ dưới đây :

Gate.jpg

 

Tue_NV cũng là người học lóm, học mót như bác thôi. Cái hàm gocve đó là của bác tdvn góp ý đó. bác nhớ không?. Mình xin kể cho bác Bình nghe chuyện này : Thầy giáo mình hồi xưa dạy lớp Cài đặt và bảo trì máy vi tính. Thầy nói rằng khi xưa thầy đi học nghề Cài đặt và bảo trì máy vi tính cho người ta, thầy cũng đã học lớp điện tử, sửa ti vi. Thầy đã phá rất nhiều cái máy do tính ham học, tò mò và thầy đã bị họ bắt đền, bị lấy tiền, đôi lúc không còn đồng xu dính túi. Thầy học nhiều, phá nhiều và đền cũng nhiều và kết cục là thầy đã có một cái nghề rất giỏi, rất giỏi.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Bác Tue_NV ơi

phiền bác có thể gúp tôi, khi chạy thì Ok rồi nhưng tại sao line1 và line2 không snap vào nhau được

mình muốn line1 và line2 phải snap với nhau(hay line1 và line2 = Pline)

và bác có thể sửa gúp: khi chạy thì line1, line2 cùng layer (VD layer1)

, text1 ở layer2, text2 ở layer3 (line1+line2 ở layer1, text1 ở layer2, text2 ở layer3: có 3 layer)

Thanks bác và anh em đã quan tâm

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Bác Tue_NV ơi

phiền bác có thể gúp tôi, khi chạy thì Ok rồi nhưng tại sao line1 và line2 không snap vào nhau được

mình muốn line1 và line2 phải snap với nhau(hay line1 và line2 = Pline)

và bác có thể sửa gúp: khi chạy thì line1, line2 cùng layer (VD layer1)

, text1 ở layer2, text2 ở layer3 (line1+line2 ở layer1, text1 ở layer2, text2 ở layer3: có 3 layer)

Thanks bác và anh em đã quan tâm

Chào bạn truongbv

bạn nên rút kinh nghiệm khi post bài viết : bạn nên nói cụ thể ngay từ đầu để khỏi làm mất thời gian của chính mình và của người khác bạn nhé.

bạn nói Line1 - Line 2 là 1 đường polyline duy nhất phải không?

Còn Layer1; Layer2; Layer3 cụ thể đó là tên layer gì trong file bản vẽ của bạn?

Bạn nói rõ ra nhé.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Chào bạn truongbv

bạn nên rút kinh nghiệm khi post bài viết : bạn nên nói cụ thể ngay từ đầu để khỏi làm mất thời gian của chính mình và của người khác bạn nhé.

bạn nói Line1 - Line 2 là 1 đường polyline duy nhất phải không?

Còn Layer1; Layer2; Layer3 cụ thể đó là tên layer gì trong file bản vẽ của bạn?

Bạn nói rõ ra nhé.

Thanks bác đã góp ý lần sau tôi xin rút kinh nghiệm

+ Đúng ạ Line1-Line2 là 1 đường Polyline

+ Line1-Line2 là 1 đường Polyline thuộc Layer1 tên layer là "PLine trich dan"

+ Text1 thuộc Layer2 có tên layer là "Text do rong tren"

+ Text2 thuộc Layer3 có tên layer là "Text do rong duoi"

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Thanks bác đã góp ý lần sau tôi xin rút kinh nghiệm

+ Đúng ạ Line1-Line2 là 1 đường Polyline

+ Line1-Line2 là 1 đường Polyline thuộc Layer1 tên layer là "PLine trich dan"

+ Text1 thuộc Layer2 có tên layer là "Text do rong tren"

+ Text2 thuộc Layer3 có tên layer là "Text do rong duoi"

Lẽ ra bạn nên nói thêm các thuuọc tính của các layer "PLine trich dan" ; "Text do rong tren" ; "Text do rong duoi" để người viết Lisp viết thêm trong đoạn Code nữa.

Đây là đoạn code theo ý bạn

;;
(defun gocve( goc)
(if (and (> goc 90.0) ()
;;
(defun c:LTE(/ c ent sp ep angl a di b ang d ct cd tb hei sty fo)
(vl-load-com)
(setq ent (entsel "\n Chon duong Line:")
c (cadr ent)
ent (car ent)
sp (vlax-curve-getStartPoint ent)
ep (vlax-curve-getEndPoint ent)
angl (angle ep sp)

a (getpoint c "\n Pick diem cuoi cua Line 1 :")
di (getdist a "\n Pick diem cuoi cua Line 2 :") 

b (polar a angl di)
ang (/ (* angl 180) pi))

(if ((setq ang (+ (/ (* angl 180) pi) 180)
))

(setq d (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))


(Command "PLine" c a b "")
(if (= (tblobjname "layer" "PLine trich dan") nil)
(Command "layer" "n" "PLine trich dan" "")
)
(Command "change" "L" "" "P" "LA" "PLine trich dan" "")


(setq ct (getstring "\n Nhap vao chu tren :")
cd (getstring "\n Nhap vao chu duoi :"))

(setq tb (tblsearch "style" "Arial"))
(if (= tb nil)
(progn
(Command "style" "arial" "Arial.ttf" "0" "1" "0" "n" "n")
(setq hei (cdr (assoc 42 tb))
sty (cdr (assoc 2 tb))
fo (cdr (assoc 3 tb)))
)
)
(if (/= tb nil)
(progn
(setq hei (cdr (assoc 42 tb))
sty (cdr (assoc 2 tb))
fo (cdr (assoc 3 tb)))
)
)
(Command "style" fo "0" "" "" "n" "n")
(Command "text" "j" "BC" d hei (gocve ang) ct)

(if (= (tblobjname "layer" "Text do rong tren") nil)
(Command "layer" "n" "Text do rong tren" "")
)
(Command "change" "L" "" "P" "LA" "Text do rong tren" "")

(Command "text" "j" "TC" d hei (gocve ang) cd)
(if (= (tblobjname "layer" "Text do rong duoi") nil)
(Command "layer" "n" "Text do rong duoi" "")
)
(Command "change" "L" "" "P" "LA" "Text do rong duoi" "")


(Princ)
)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Bác Tue_NV ơi tôi lại làm phiền bác 1 chút rồi

khi vẽ thì chỉ được 1 chiều còn chiều kia thì chưa được

bác xem hình đây

http://www.cadviet.com/upfiles/Pline.jpg

tôi chỉnh mãi mà từ sáng đến giờ vẫn chưa được lại làm phiền bác vậy

bác viết code sao cho + vẽ theo hướng nào thì nó vẫn được

+ và thêm đk nữa là đối tượng được chọn=line2 (line2 song song với đối tượng chọn)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Chào Bác PhamThanhBinh

Cái bản vẽ bạn Truongbv là bản vẽ mà bạn ấy đã lưu CAD2000 nên mở được.

Còn bản vẽ đầu tiên bạn ấy gửi lưu ở CAD đời mới. nên với CAD đời cũ sử dụng DWGgateway mà đọc.

Cách sử dụng khá đơn giản : Khi cài xong DWGgateway thì DWGgateway sẽ tích hợp trên menu của CAD -> Bạn chọn Open Any DWG Version -> Hiện lên hộp thoại Open -> Bạn chọn File -> open

Bác xem hình vẽ dưới đây :

Gate.jpg

 

Tue_NV cũng là người học lóm, học mót như bác thôi. Cái hàm gocve đó là của bác tdvn góp ý đó. bác nhớ không?. Mình xin kể cho bác Bình nghe chuyện này : Thầy giáo mình hồi xưa dạy lớp Cài đặt và bảo trì máy vi tính. Thầy nói rằng khi xưa thầy đi học nghề Cài đặt và bảo trì máy vi tính cho người ta, thầy cũng đã học lớp điện tử, sửa ti vi. Thầy đã phá rất nhiều cái máy do tính ham học, tò mò và thầy đã bị họ bắt đền, bị lấy tiền, đôi lúc không còn đồng xu dính túi. Thầy học nhiều, phá nhiều và đền cũng nhiều và kết cục là thầy đã có một cái nghề rất giỏi, rất giỏi.

Ối ối, bác Tuê_Nv ơi,

Mình đã down về rồi, đã cài và trên Cad 2004 của mình đã xuất hiện cái menu DWGGateway rồi. Mình cũng đã vào đúng cái menu đó, chọn đúng cái Open any DWG version, rồi chọn vào cái file của bạn Truongbv đã được mình down về lưu lại. Vậy mà nó cứ trơ thổ địa ra, không chịu mở cho mình coi, lại còn mắng mình là Drawing filename is not value. Thế có tức không cơ chứ. Có nhẽ nó thù hằn mình chi đó bác ạ. Chắc phải nhờ tòa hòa giải mất bác nhể. Hì hì khổ thế.

Chúc bác vui.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Ối ối, bác Tuê_Nv ơi,

Mình đã down về rồi, đã cài và trên Cad 2004 của mình đã xuất hiện cái menu DWGGateway rồi. Mình cũng đã vào đúng cái menu đó, chọn đúng cái Open any DWG version, rồi chọn vào cái file của bạn Truongbv đã được mình down về lưu lại. Vậy mà nó cứ trơ thổ địa ra, không chịu mở cho mình coi, lại còn mắng mình là Drawing filename is not value. Thế có tức không cơ chứ. Có nhẽ nó thù hằn mình chi đó bác ạ. Chắc phải nhờ tòa hòa giải mất bác nhể. Hì hì khổ thế.

Chúc bác vui.

Thôi bác à. không cần tức làm gì cho nó hại sức khẻo

đây tôi gủi bác file mở được ở CAD 2000 và code bác Tue_NV viết

bác có cao kiến gì gúp tôi chỉnh lại code 1 chút vì nó chưa được như ý

của tôi bác có thể xem trên bản vẽ tôi khoanh tròn đó

http://www.cadviet.com/upfiles/A_A1_2000_1.dwg

code

http://www.cadviet.com/upfiles/Polyline_va_text.lsp

cám ơn các bác đã quan tâm.

chúc anh em ngày nghỉ cuối tuần vui vẻ. :undecided:

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Bác Tue_NV ơi tôi lại làm phiền bác 1 chút rồi

khi vẽ thì chỉ được 1 chiều còn chiều kia thì chưa được

bác xem hình đây

http://www.cadviet.com/upfiles/Pline.jpg

tôi chỉnh mãi mà từ sáng đến giờ vẫn chưa được lại làm phiền bác vậy

bác viết code sao cho + vẽ theo hướng nào thì nó vẫn được

+ và thêm đk nữa là đối tượng được chọn=line2 (line2 song song với đối tượng chọn)

Chào bạn Truongbv,

1/- Vấn đề của bạn là ở chỗ xác định tọa độ của điểm b trong đoạn lisp của bác Tue_NV mà thôi. Bạn hãy tham khảo cái hàm gocve ở ngay trong lisp đó để bổ sung cho việc xác định goc angl trong dòng code (setq b (polar a angl di)) là Ok thôi mà. Bạn tự sửa nhé.

2/- Không hiểu ý bạn. Đối tượng được chọn bằng line 2 , line 2 song song với đối tượng là sao bạn nhỉ??? Phải chăng bạn muốn nói là để chọn một đối tượng nào đó trên cad, bạn sẽ chọn vào một đối tượng khác song song với nó??? Bạn hãy nhớ rằng khi bạn chọn đối tượng line để làm cơ sở cho các việc xác định khác trong đoạn lisp này thì cái line 2 của bạn đã có đâu mà chọn nó . Cái line 2 chỉ có được sau khi đã có line rồi và thực hiện hàng loạt các thao tác khác nữa bạn ạ.

Rất mong bạn trình bày thật rõ cái ý tưởng của mình chứ không có chỉ tổ làm đau đầu những người muốn giúp bạn như bác Tue_NV thôi, mà hệ quả là bạn vẫn chả có được cái mình cần.

Chào bạn và chúc bạn thành công.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Chào bạn Truongbv,

1/- Vấn đề của bạn là ở chỗ xác định tọa độ của điểm b trong đoạn lisp của bác Tue_NV mà thôi. Bạn hãy tham khảo cái hàm gocve ở ngay trong lisp đó để bổ sung cho việc xác định goc angl trong dòng code (setq b (polar a angl di)) là Ok thôi mà. Bạn tự sửa nhé.

2/- Không hiểu ý bạn. Đối tượng được chọn bằng line 2 , line 2 song song với đối tượng là sao bạn nhỉ??? Phải chăng bạn muốn nói là để chọn một đối tượng nào đó trên cad, bạn sẽ chọn vào một đối tượng khác song song với nó??? Bạn hãy nhớ rằng khi bạn chọn đối tượng line để làm cơ sở cho các việc xác định khác trong đoạn lisp này thì cái line 2 của bạn đã có đâu mà chọn nó . Cái line 2 chỉ có được sau khi đã có line rồi và thực hiện hàng loạt các thao tác khác nữa bạn ạ.

Rất mong bạn trình bày thật rõ cái ý tưởng của mình chứ không có chỉ tổ làm đau đầu những người muốn giúp bạn như bác Tue_NV thôi, mà hệ quả là bạn vẫn chả có được cái mình cần.

Chào bạn và chúc bạn thành công.

Cám ơn bác đã quan tâm, vì mới tìm hiểu nên cũng chưa biết được nhiều mong các bác thông cảm

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Thôi bác à. không cần tức làm gì cho nó hại sức khẻo

đây tôi gủi bác file mở được ở CAD 2000 và code bác Tue_NV viết

bác có cao kiến gì gúp tôi chỉnh lại code 1 chút vì nó chưa được như ý

của tôi bác có thể xem trên bản vẽ tôi khoanh tròn đó

http://www.cadviet.com/upfiles/A_A1_2000_1.dwg

code

http://www.cadviet.com/upfiles/Polyline_va_text.lsp

cám ơn các bác đã quan tâm.

chúc anh em ngày nghỉ cuối tuần vui vẻ. :undecided:

Chào bạn Truongbv,

Bạn hãy bổ sung khúc lisp này vào đầu đoạn lisp của bác Tue_NV:

(defun gocveline ( goc gc)

(if (and (> gc 0.0) (

)

đoạn lisp dưới đây vào trước dòng code b (polar a angl di):

angl (gocveline angl (angle c a))

đoạn lisp này để trả lại giá trị của angl trong lisp của bác Tue_nv vào dưới dòng code b (polar a angl di):

angl (angle ep sp)

 

Cuối cùng nhớ bổ sung hai biến mới gc và goc vào trong danh sách các biến của hàm tl nhé.

 

Và OK ngay cái yêu cầu 1 của bạn. Hãy thử xem vì mình mới chỉ suy luận vậy chứ chưa thử nghiệm.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Bác Tue_NV ơi tôi lại làm phiền bác 1 chút rồi

khi vẽ thì chỉ được 1 chiều còn chiều kia thì chưa được

bác xem hình đây

http://www.cadviet.com/upfiles/Pline.jpg

tôi chỉnh mãi mà từ sáng đến giờ vẫn chưa được lại làm phiền bác vậy

bác viết code sao cho + vẽ theo hướng nào thì nó vẫn được

+ và thêm đk nữa là đối tượng được chọn=line2 (line2 song song với đối tượng chọn)

Xin chỉnh lại là chọn đối tượng Line. Vẽ line1 line2 bằng Pline và line2 song song với line được chọn

Tue_NV đã chỉnh lại Code theo ý của bạn

Hy vọng bạn hài lòng

;;
(defun gocve( goc)
(if (and (> goc 90.0) ()
;;
(defun c:LTE(/ c ent sp ep angl a di b ang d ct cd tb hei sty fo)
(vl-load-com)
(setq ent (entsel "\n Chon duong Line:")
c (cadr ent)
ent (car ent)
sp (vlax-curve-getStartPoint ent)
ep (vlax-curve-getEndPoint ent)
angl (angle ep sp)

a (getpoint c "\n Pick diem cuoi cua Line 1 :")
di (getpoint a "\n Pick diem cuoi cua Line 2 :") 

b (polar a angl (distance a di))
ang (/ (* angl 180) pi))

(if (or (and ((Progn
(setq angl (angle sp ep)
b (polar a angl (distance a di))
ang (/ (* angl 180) pi))
))

(setq d (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))

(Command "PLine" c a b "")
(if (= (tblobjname "layer" "PLine trich dan") nil)
(Command "layer" "n" "PLine trich dan" "")
)
(Command "change" "L" "" "P" "LA" "PLine trich dan" "")


(setq ct (getstring "\n Nhap vao chu tren :")
cd (getstring "\n Nhap vao chu duoi :"))

(setq tb (tblsearch "style" "Arial"))
(if (= tb nil)
(progn
(Command "style" "arial" "Arial.ttf" "0" "1" "0" "n" "n")
(setq hei (cdr (assoc 42 tb))
sty (cdr (assoc 2 tb))
fo (cdr (assoc 3 tb)))
)
)
(if (/= tb nil)
(progn
(setq hei (cdr (assoc 42 tb))
sty (cdr (assoc 2 tb))
fo (cdr (assoc 3 tb)))
)
)
(Command "style" fo "0" "" "" "n" "n")
(Command "text" "j" "BC" d hei (gocve ang) ct)

(if (= (tblobjname "layer" "Text do rong tren") nil)
(Command "layer" "n" "Text do rong tren" "")
)
(Command "change" "L" "" "P" "LA" "Text do rong tren" "")

(Command "text" "j" "TC" d hei (gocve ang) cd)
(if (= (tblobjname "layer" "Text do rong duoi") nil)
(Command "layer" "n" "Text do rong duoi" "")
)
(Command "change" "L" "" "P" "LA" "Text do rong duoi" "")


(Princ)
)

Bạn hãy chạy thử xem và cho biết ý kiến nhé. Nếu bạn còn gì vướng mắc nữa hãy cứ post lên đây. Tue_NV sẽ giúp.

Chúc bạn thành công.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay
Đăng nhập để thực hiện theo  

×