Đến nội dung


Hình ảnh
* * * - - 2 Bình chọn

Viết Lisp theo yêu cầu


  • Chủ đề bị khóa Chủ đề bị khóa
2780 replies to this topic

#1521 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 07 February 2009 - 08:43 PM

Bạn có thể giúp mình viết lệnh tố hatch tự động theo kiểu cú pháp trên.
cơ sở là có 2 toạ độ của 2 góc đối diện của hình chữ nhật (ví dụ toạ độ: 0,0 và 5,5)
mình đang viết một một tiệ ích nhỏ trên excel và xuất ra lisp để chậy trên cad, nhưng chưa nghĩ ra cách viết lệnh hatch.
Mong bạn giúp đỡ

Đoạn Lisp này sẽ giúp bạn thực hiện điều đó.
Khi chạy bạn chọn 2 điểm là 2 góc đối diện của hình chữ nhật và Lisp sẽ tự động Hatch vào hình chữ nhật này.
Đoạn lisp này sử dụng kiểu hatch là kiểu ansi31 với tỷ lệ phóng mẫu là 10 và góc nghiêng mẫu là 0 độ.
(defun c:TOH()
(prompt "\n Nhap 2 toa do la 2 goc doi dien cua hinh chu nhat :")
(setq dc1 (getpoint "\nNhap diem thu nhat :"))
(setq dc2 (getpoint dc1"\nNhap diem thu 2 :"))
(setq dc3 (list(car dc2) (cadr dc1)))
(setq dc4 (list(car dc1) (cadr dc2)))
(command "hatch" "ansi31" "10" "0" "" "y" dc1 dc3 dc2 dc4 "c" "")
(princ)
)
Hy vọng Lisp chạy đúng ý bạn.
  • 0

#1522 quocanhxd05

quocanhxd05

    biết vẽ ellipse

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

Đã gửi 09 February 2009 - 10:37 AM

Bạn có thể post yêu cầu về autolisp ở topic này.

Chào các bác.
Tôi muốn xin một lệnh dùng để bo tròn các đỉnh của các polyline.
Các buớc thực hiện như sau :
1-nhập lệnh
2-nhập bán kính bẻ cong. Nếu nhấn enter thì lấy giá trị cũ.
3-chọn các đối tượng là polyline
4-enter kết thúc lệnh.
Xem file kèm theo :
http://www.cadviet.c...es/Question.dwg
Thanks!!!!!!!!!!!!!!!!!!!
  • 0
-------------------- Sống ở trên đời cần một chữ NHẪN --------------------

#1523 xuantran15

xuantran15

    biết lệnh ddedit

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

Đã gửi 09 February 2009 - 10:53 AM

Lệnh Fillet (F) hoàn toàn có thể giải quyết cho bạn vấn đề này
F enter - chọn R (Nhập vào bán kính cong) - Chọn P enter - quét chọn PL của bạn - enter -> xong

Chú ý kích thước của R phải phù hơp.
  • 0
Hình đã gửi
Thu đi cho lá vàng bay
Lá rơi cho đám cưới về......

#1524 nguyenkhoadung98

nguyenkhoadung98

    biết vẽ pline

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

Đã gửi 09 February 2009 - 11:11 AM

chào các bác, e muốn xin các bác có cái lisp nào có thể làm đc như sau kô ah :

khi click vào text ( DT ) thì tự động chuyển thành chữ có bạch chân ( Bold) làm được với multy thì tốt wa các bác ah. e cảm ơn các bác nhiều
  • 0

#1525 haiduong2105

haiduong2105

    biết zoom

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

Đã gửi 09 February 2009 - 11:29 AM

Chào bạn Tue_NV và bạn phamthanhbinh!
Rất cán ơn hai bạn đã quan tâm giúp đỡ mình đã làm được rồi.
  • 0

#1526 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 09 February 2009 - 11:29 AM

chào các bác, e muốn xin các bác có cái lisp nào có thể làm đc như sau kô ah :

khi click vào text ( DT ) thì tự động chuyển thành chữ có bạch chân ( Bold) làm được với multy thì tốt wa các bác ah. e cảm ơn các bác nhiều

Bạn có nhầm lẫn không? Bold là chữ được tô đậm chứ đâu có phải là chữ gạch chân.
Rút cục là bạn muốn chữ đậm hay chữ gạch chân?
Thêm chữ có gạch chân thì bạn dọc ở đây : http://www.cadviet.c...?showtopic=6991
Còn muốn tô chữ đậm thì bạn đọc ở đây : http://www.cadviet.c...amp;#entry48704
Lưu ý muốn tô chữ đậm bạn phải biết trước font chữ style mà bạn đang sử dụng.

Bài viết đã được chỉnh sửa nội dung bởi Tue_NV: 09 February 2009 - 02:30 PM

  • 0

#1527 quocanhxd05

quocanhxd05

    biết vẽ ellipse

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

Đã gửi 09 February 2009 - 12:02 PM

Lệnh Fillet (F) hoàn toàn có thể giải quyết cho bạn vấn đề này
F enter - chọn R (Nhập vào bán kính cong) - Chọn P enter - quét chọn PL của bạn - enter -> xong

Chú ý kích thước của R phải phù hơp.

Cảm ơn bác nhìu.
  • 0
-------------------- Sống ở trên đời cần một chữ NHẪN --------------------

#1528 quocanhxd05

quocanhxd05

    biết vẽ ellipse

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

Đã gửi 09 February 2009 - 04:47 PM

Bạn có thể post yêu cầu về autolisp ở topic này.

Mình muốn xin 1 file lisp tương tự như lệnh MATCHPROP của cad nhưng lệnh mới này dùng được cho cả các đối tượng nằm trong block.
Cảm ơn các bác trước!
  • 0
-------------------- Sống ở trên đời cần một chữ NHẪN --------------------

#1529 baodenhp

baodenhp

    biết vẽ arc

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

Đã gửi 09 February 2009 - 05:04 PM

Mình muốn import block được chỉ định theo 1 file toạ độ, định dạng file toạ độ http://www.cadviet.c...iles/toa_do.xls (định dạng file gồm tọa độ x,y). Còn về tỷ lệ, góc quay... thì không cần thiết lắm.

Sao ko ai giup minh vay???
  • 0

#1530 loiphong

loiphong

    biết vẽ circle

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

Đã gửi 09 February 2009 - 07:15 PM

Bữa trước ssg có viết dùm Lisp tìm những kích thước bị độ. Bạn có Lisp nào có khả năng tìm được những kích thước đã bị explode ko giúp mình với. Thanks
  • 0

#1531 haiduong2105

haiduong2105

    biết zoom

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

Đã gửi 10 February 2009 - 01:33 AM

Đoạn Lisp này sẽ giúp bạn thực hiện điều đó.
Khi chạy bạn chọn 2 điểm là 2 góc đối diện của hình chữ nhật và Lisp sẽ tự động Hatch vào hình chữ nhật này.
Đoạn lisp này sử dụng kiểu hatch là kiểu ansi31 với tỷ lệ phóng mẫu là 10 và góc nghiêng mẫu là 0 độ.

(defun c:TOH()
(prompt "\n Nhap 2 toa do la 2 goc doi dien cua hinh chu nhat :")
(setq dc1 (getpoint "\nNhap diem thu nhat :"))
(setq dc2 (getpoint dc1"\nNhap diem thu 2 :"))
(setq dc3 (list(car dc2) (cadr dc1)))
(setq dc4 (list(car dc1) (cadr dc2)))
(command "hatch" "ansi31" "10" "0" "" "y" dc1 dc3 dc2 dc4 "c" "")
(princ)
)
Hy vọng Lisp chạy đúng ý bạn.



Chào bạn lisp của bạn rất hay có thể tô cho 1 hình bất kỳ miễn là nhập toạ độ các đỉnh cho nó.
Ví dụ (cái này mình lập trên Excel)
(command "layer" "n" "Text" "s" "Text" "c" "1" "" "")
(command "text" "j" "M" "104.65,0" "1" "0" "1.S")
(command "text" "j" "M" "117.2,-3" "1" "0" "2.S")
(command "text" "j" "M" "117.2,3" "1" "0" "3.LV")
(command "text" "j" "M" "131.5,-2.5" "1" "0" "4.S")
(command "text" "j" "M" "131.5,3.5" "1" "0" "5.S")
(command "text" "j" "M" "145,2" "1" "0" "6.S")
(command "text" "j" "M" "140.1,-2.8" "1" "0" "7.G")
(command "text" "j" "M" "150.6,-2.5" "1" "0" "8.S")
(command "text" "j" "M" "155.5,2.6" "1" "0" "9.RN")
(command "text" "j" "M" "160.9,-3.8" "1" "0" "10.S")
(command "layer" "n" "Hatch" "s" "Hatch" "c" "3" "" "")
(command "hatch" "ansi31" "2" "0" "" "y" "100,-4.5" "100,4.5" "109.3,4.5" "109.3,-4.5" "c" "")
(command "hatch" "ansi31" "2" "0" "" "y" "109.3,-5" "109.3,-1" "125.1,-1" "125.1,-5" "c" "")
(command "hatch" "ansi36" "2" "0" "" "y" "109.3,1" "109.3,5" "125.1,5" "125.1,1" "c" "")
(command "hatch" "ansi31" "2" "0" "" "y" "125.1,-5" "125.1,0" "137.9,0" "137.9,-5" "c" "")
(command "hatch" "ansi31" "2" "0" "" "y" "125.1,2" "125.1,5" "137.9,5" "137.9,2" "c" "")
(command "hatch" "ansi31" "2" "0" "" "y" "137.9,0" "137.9,4" "152.1,4" "152.1,0" "c" "")
(command "hatch" "ansi32" "2" "90" "" "y" "137.9,-4.6" "137.9,-1" "142.3,-1" "142.3,-4.6" "c" "")
(command "hatch" "ansi31" "2" "0" "" "y" "142.3,-4.5" "142.3,-0.5" "158.9,-0.5" "158.9,-4.5" "c" "")
(command "hatch" "ansi33" "2" "90" "" "y" "152.1,0.6" "152.1,4.6" "158.9,4.6" "158.9,0.6" "c" "")
(command "hatch" "ansi31" "2" "0" "" "y" "158.9,-5.6" "158.9,-2" "162.9,-2" "162.9,-5.6" "c" "")


Nhưng khi sử dụng vào công việc của mình thì mình thấy lại bất cập vì hatch đè nên chữ rất khó đọc nên mình nhờ các bạn giúp mình viết lệnh Hatch kiểu như lệnh Hacth song pick vào miền kép kín thì nó sẽ không bị đè lên text (vì mình có thể vẽ hình bao trước và đã có toạ độ pick nấy luôn toạ độ chèn text) hoặc chỉ cho mình 1 cách làm cho hacth không đè nên text
  • 0

#1532 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 10 February 2009 - 07:56 AM

Chào bạn lisp của bạn rất hay có thể tô cho 1 hình bất kỳ miễn là nhập toạ độ các đỉnh cho nó.

Nhưng khi sử dụng vào công việc của mình thì mình thấy lại bất cập vì hatch đè nên chữ rất khó đọc nên mình nhờ các bạn giúp mình viết lệnh Hatch kiểu như lệnh Hacth song pick vào miền kép kín thì nó sẽ không bị đè lên text (vì mình có thể vẽ hình bao trước và đã có toạ độ pick nấy luôn toạ độ chèn text) hoặc chỉ cho mình 1 cách làm cho hacth không đè nên text

Đây là đoạn Lisp theo ý bạn nè. Bạn hãy đọc và tìm hiểu kỹ hơn sẽ tìm ra lời giải cho công việc của mình :
(defun c:TOH()
(prompt "\n Nhap 2 toa do la 2 goc doi dien cua hinh chu nhat :")
(setq dc1 (getpoint "\nNhap diem thu nhat :"))
(setq dc2 (getpoint dc1"\nNhap diem thu 2 :"))
(prompt "Ban chon Text va hatch se khong de len text")
(setq te (ssget))
(setq dc3 (list(car dc2) (cadr dc1)))
(setq dc4 (list(car dc1) (cadr dc2)))
(command "pline" dc1 dc3 dc2 dc4 "c")
(command "hatch" "ansi31" "10" "0" "L" te "")
(princ)
)
Chúc bạn thành công. :cheers:

Chào bạn Tue_NV và bạn phamthanhbinh!
Rất cán ơn hai bạn đã quan tâm giúp đỡ mình đã làm được rồi.

Cảm ơn bạn. Không nhất thiết phải post bài để bày tỏ cảm ơn như thế này
Tick thanks nhiều nhiều là OK. :cheers:
  • 0

#1533 nguyenkhoadung98

nguyenkhoadung98

    biết vẽ pline

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

Đã gửi 10 February 2009 - 10:22 AM

Bạn có nhầm lẫn không? Bold là chữ được tô đậm chứ đâu có phải là chữ gạch chân.
Rút cục là bạn muốn chữ đậm hay chữ gạch chân?
Thêm chữ có gạch chân thì bạn dọc ở đây : http://www.cadviet.c...?showtopic=6991
Còn muốn tô chữ đậm thì bạn đọc ở đây : http://www.cadviet.c...amp;#entry48704
Lưu ý muốn tô chữ đậm bạn phải biết trước font chữ style mà bạn đang sử dụng.

là gạch chân bác ạ, em nhầm :cheers: cảm ơn bác rất là nhiều thanks
  • 0

#1534 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 10 February 2009 - 12:22 PM

Chào bạn lisp của bạn rất hay có thể tô cho 1 hình bất kỳ miễn là nhập toạ độ các đỉnh cho nó.
Ví dụ (cái này mình lập trên Excel)
(command "layer" "n" "Text" "s" "Text" "c" "1" "" "")
(command "text" "j" "M" "104.65,0" "1" "0" "1.S")
(command "text" "j" "M" "117.2,-3" "1" "0" "2.S")
(command "text" "j" "M" "117.2,3" "1" "0" "3.LV")
(command "text" "j" "M" "131.5,-2.5" "1" "0" "4.S")
(command "text" "j" "M" "131.5,3.5" "1" "0" "5.S")
(command "text" "j" "M" "145,2" "1" "0" "6.S")
(command "text" "j" "M" "140.1,-2.8" "1" "0" "7.G")
(command "text" "j" "M" "150.6,-2.5" "1" "0" "8.S")
(command "text" "j" "M" "155.5,2.6" "1" "0" "9.RN")
(command "text" "j" "M" "160.9,-3.8" "1" "0" "10.S")
(command "layer" "n" "Hatch" "s" "Hatch" "c" "3" "" "")
(command "hatch" "ansi31" "2" "0" "" "y" "100,-4.5" "100,4.5" "109.3,4.5" "109.3,-4.5" "c" "")
(command "hatch" "ansi31" "2" "0" "" "y" "109.3,-5" "109.3,-1" "125.1,-1" "125.1,-5" "c" "")
(command "hatch" "ansi36" "2" "0" "" "y" "109.3,1" "109.3,5" "125.1,5" "125.1,1" "c" "")
(command "hatch" "ansi31" "2" "0" "" "y" "125.1,-5" "125.1,0" "137.9,0" "137.9,-5" "c" "")
(command "hatch" "ansi31" "2" "0" "" "y" "125.1,2" "125.1,5" "137.9,5" "137.9,2" "c" "")
(command "hatch" "ansi31" "2" "0" "" "y" "137.9,0" "137.9,4" "152.1,4" "152.1,0" "c" "")
(command "hatch" "ansi32" "2" "90" "" "y" "137.9,-4.6" "137.9,-1" "142.3,-1" "142.3,-4.6" "c" "")
(command "hatch" "ansi31" "2" "0" "" "y" "142.3,-4.5" "142.3,-0.5" "158.9,-0.5" "158.9,-4.5" "c" "")
(command "hatch" "ansi33" "2" "90" "" "y" "152.1,0.6" "152.1,4.6" "158.9,4.6" "158.9,0.6" "c" "")
(command "hatch" "ansi31" "2" "0" "" "y" "158.9,-5.6" "158.9,-2" "162.9,-2" "162.9,-5.6" "c" "")
Nhưng khi sử dụng vào công việc của mình thì mình thấy lại bất cập vì hatch đè nên chữ rất khó đọc nên mình nhờ các bạn giúp mình viết lệnh Hatch kiểu như lệnh Hacth song pick vào miền kép kín thì nó sẽ không bị đè lên text (vì mình có thể vẽ hình bao trước và đã có toạ độ pick nấy luôn toạ độ chèn text) hoặc chỉ cho mình 1 cách làm cho hacth không đè nên text

Chào bạn Haiduong2105,
Để có thể sử dụng lisp theo đúng ý mình, bạn nên tìm hiểu kỹ hơn về lisp bạn ạ. Mọi người sẵn sàng giúp bạn song đôi khi không thể đúng hoàn toàn như ý bạn được do hiểu nhầm về cái yêu cầu của bạn hoặc do không nắm được cụ thể cái bạn cần.
Để tránh hatch đè lên text bạn phải tạo một khung pline kín bảo vệ text mà trong topic này mình thấy đã có lisp hình như của bạn Tuan_thietkedien thì phải. Bạn sử dụng lisp này để bao cái text bạn cần bảo vệ lại. Tất nhiên khung bạn phải sửa lisp một tí để cái khung bao text nằm hoàn toàn trong khung cần hatch của bạn.
Sau đó bạn sử dụng đoạn mã sau để hatch sẽ không bị đường hatch đè lên text nữa:
(command "hatch" "ansi31" 10 0 (entsel)) . Khi chạy lisp nó sẽ yêu cầu bạn chọn đối tượng và bạn chọn vào hai khung pline kín đó rồi enter.
Sau khi hatch xong nếu bạn muốn có thể delete cái khung bên trong là OK.

Nếu bạn muốn lisp tự chạy hoàn toàn không cần bạn phải chọn đối tượng thì bạn phải dùng hàm (setq) để đặt tên cho các khung pline của bạn rồi trong dòng lệnh command bạn thay hàm (entsel) bằng tên các đối tượng của bạn rồi kết thúc bằng "" tương đương với việc gõ enter là được.

Mình có thể viết toàn bộ lisp này cho bạn được nhưng rất mong bạn cố làm thử xem sao, vì nhu vậy bạn sẽ học được nhiếu hơn trong việc ứng dụng lisp vào công việc của mì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.

#1535 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 10 February 2009 - 01:50 PM

Đây là đoạn Lisp theo ý bạn nè. Bạn hãy đọc và tìm hiểu kỹ hơn sẽ tìm ra lời giải cho công việc của mình :

(defun c:TOH()
(prompt "\n Nhap 2 toa do la 2 goc doi dien cua hinh chu nhat :")
(setq dc1 (getpoint "\nNhap diem thu nhat :"))
(setq dc2 (getpoint dc1"\nNhap diem thu 2 :"))
(prompt "Ban chon Text va hatch se khong de len text")
(setq te (ssget))
(setq dc3 (list(car dc2) (cadr dc1)))
(setq dc4 (list(car dc1) (cadr dc2)))
(command "pline" dc1 dc3 dc2 dc4 "c")
(command "hatch" "ansi31" "10" "0" "L" te "")
(princ)
)
Chúc bạn thành công. :cheers:

Cảm ơn bạn. Không nhất thiết phải post bài để bày tỏ cảm ơn như thế này
Tick thanks nhiều nhiều là OK. :cheers:

Rất cám ơn bác Tue Nv, qua đoạn lisp này mình thấy hay hơn cái cách của mình rất nhiều. Nó không cần phải tạo khung pline cho text nữa. Và do đó cũng không cần phải xóa khung bao này.
Xin phép bác Tue Nv, mình giải thích thêm một chút cho những người mới làm quen với lisp.
Ở đoạn lisp này, bác Tue Nv đã thay đổi cách tạo lệnh hatch , thay vì chọn các đỉnh của khung pline kín như lisp bác đã post lần trước thì bác ấy đã chọn vào chính pline đó bằng tham số "L" nghĩa là đối tượng cuối cùng lisp vừa tạo (Last entity) trên bản vẽ.
Hai cách sử dụng lệnh Hatch này có khác nhau và các bạn mới học lisp nên lưu ý về cú pháp của nó.
Lệnh ssget ở đây cho phép chọn nhiều đối tượng text nhưng người dùng phải lưu ý các text này đều phải nằm trong khung pline mới được. Nếu không hatch sẽ không chạy được.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1536 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 10 February 2009 - 04:19 PM

Rất cám ơn bác Tue Nv, qua đoạn lisp này mình thấy hay hơn cái cách của mình rất nhiều. Nó không cần phải tạo khung pline cho text nữa. Và do đó cũng không cần phải xóa khung bao này.
Xin phép bác Tue Nv, mình giải thích thêm một chút cho những người mới làm quen với lisp.
Ở đoạn lisp này, bác Tue Nv đã thay đổi cách tạo lệnh hatch , thay vì chọn các đỉnh của khung pline kín như lisp bác đã post lần trước thì bác ấy đã chọn vào chính pline đó bằng tham số "L" nghĩa là đối tượng cuối cùng lisp vừa tạo (Last entity) trên bản vẽ.
Hai cách sử dụng lệnh Hatch này có khác nhau và các bạn mới học lisp nên lưu ý về cú pháp của nó.
Lệnh ssget ở đây cho phép chọn nhiều đối tượng text nhưng người dùng phải lưu ý các text này đều phải nằm trong khung pline mới được. Nếu không hatch sẽ không chạy được.

Còn 1 cách dùng hatch bằng cách pick điểm trong lisp nửa đó bạn. Bạn tìm đọc các bài viết của bác ssg và nguyenhoanh về lisp tính diện tích bằng cách pick điểm. Áp dụng nguyên tắc này vào lisp này tốt đó.
  • 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


#1537 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 10 February 2009 - 06:33 PM

Rất cám ơn bác Tue Nv, qua đoạn lisp này mình thấy hay hơn cái cách của mình rất nhiều. Nó không cần phải tạo khung pline cho text nữa. Và do đó cũng không cần phải xóa khung bao này.
Xin phép bác Tue Nv, mình giải thích thêm một chút cho những người mới làm quen với lisp.
Ở đoạn lisp này, bác Tue Nv đã thay đổi cách tạo lệnh hatch , thay vì chọn các đỉnh của khung pline kín như lisp bác đã post lần trước thì bác ấy đã chọn vào chính pline đó bằng tham số "L" nghĩa là đối tượng cuối cùng lisp vừa tạo (Last entity) trên bản vẽ.
Hai cách sử dụng lệnh Hatch này có khác nhau và các bạn mới học lisp nên lưu ý về cú pháp của nó.
Lệnh ssget ở đây cho phép chọn nhiều đối tượng text nhưng người dùng phải lưu ý các text này đều phải nằm trong khung pline mới được. Nếu không hatch sẽ không chạy được.

Đúng như bạn phamthanhbinh nói. Nhưng ở đây, mình bổ sung thêm một ý nữa là đoạn Lisp trên có thể hatch vào hình có lỗ thủng.
Cái dòng (setq te (ssget)) ở đoạn Code trên : nếu bạn chọn text thì hatch sẽ không đè lên text, còn nếu bạn chọn miền kín nằm trong hình chữ nhật (lỗ thủng) thì Lisp sẽ hatch vào hình chữ nhật trừ vùng lỗ thủng .
Tức là Lisp trên có thể Hatch vào miền kín có lỗ thủng.
Vận dụng đoạn Lisp trên, bạn có thể nhập tọa độ lỗ thủng để Lisp sẽ hatch vào miền trừ vùng lỗ thủng.
  • 0

#1538 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 175 (tàm tạm)

Đã gửi 10 February 2009 - 08:01 PM

Nhờ các Bác viết giúp cho 1 Lisp dùng để vẽ POINT tại các điểm giao nhau của 1 Pline màu vàng với các Lines thẳng đứng như trong bàn vẽ. Xin cảm ơn.
http://www.cadviet.c...tion_Points.dwg
Hình đã gửi
Hình đã gửi
  • 0

#1539 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 10 February 2009 - 09:10 PM

Nhờ các Bác viết giúp cho 1 Lisp dùng để vẽ POINT tại các điểm giao nhau của 1 Pline màu vàng với các Lines thẳng đứng như trong bàn vẽ. Xin cảm ơn.
http://www.cadviet.c...tion_Points.dwg
Hình đã gửi
Hình đã gửi


(defun C:EI2P ()
(vl-load-com)
(princ "\n Chon polyline...")
(setq ssp (ssget '((0 . "LWPOLYLINE"))))
(princ "\n Chon cac duong line...")
(setq ssl (ssget '((0 . "LINE")))
Enp (ssname ssp 0)
dem 0
Lpoint '()
)
(repeat (sslength ssl)
(setq Lpoint (append Lpoint (GET_INTERSECTION (ssname ssl dem) Enp))
dem (1+ dem)
)
)
(foreach p Lpoint
(entmake (list '(0 . "POINT") (cons 10 p)))
)
)


(defun GET_INTERSECTION (e1 e2 / ob1 ob2 V L1 L2)
(setq ob1 (vlax-ename->vla-object e1)
ob2 (vlax-ename->vla-object e2)
V (vlax-variant-value
(vla-IntersectWith ob1 ob2 acExtendNone)
)
)
(if (/= (vlax-safearray-get-u-bound V 1) -1)
(progn
(setq L1 (vlax-safearray->list V)
L2 nil
)
(while L1
(setq L2 (append L2 (list (list (car L1) (cadr L1) (caddr L1)))))
(repeat 3 (setq L1 (cdr L1)))
)
)
(setq L2 nil)
)
L2
)

  • 0

#1540 xuantran15

xuantran15

    biết lệnh ddedit

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

Đã gửi 11 February 2009 - 10:14 AM

Chào các bác. Em có một yêu cầu mong các bác giúp đỡ.

Công việc của em thường hay gặp phải viiệc chuyển đổi từ một đường Polyline 3D sang Polyline hoặc 2D Polyline, Trước đây em thường dùng land 2004 để làm việc này nhưng lúc được lúc không, vả lại rất vất vả vì một lần như thế phải save qua cad 2004. Em đã thử dùng lisp làm phẳng đối tượng, lisp pl32(cái này dùng là đường pl3D mất luôn) của diễn đàn rồi mà cũng không được. Mong các bác viết dùm cho một cái lisp để thực hiện được điều trên. Thanks các bác nhiều.
  • 0
Hình đã gửi
Thu đi cho lá vàng bay
Lá rơi cho đám cưới về......