Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] Lisp chia 1 đoạn thẳng thành các đoạn nhỏ, nằm trên các layer khác nhau


  • Please log in to reply
6 replies to this topic

#1 pdle

pdle

    biết lệnh mtext

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

Đã gửi 12 May 2011 - 11:48 PM

Em có một vấn đề như sau:
Có một số các đường thẳng nằm trong cùng một layer (chẳng hạn Layer0):
Hình đã gửi

Em muốn chia mỗi đoạn thẳng trong số các đoạn thẳng này thành 3 đoạn thẳng nhỏ : 2 đoạn ở hai đầu có độ dài bằng nhau và bằng a (chẳng hạn a=100) và chúng cùng thuộc một layer (chẳng hạn Layer1), còn đoạn thẳng ở giữa thì chuyển thành ở layer khác (chẳng hạn Layer2):
Hình đã gửi

Em muốn viết một lisp, trong đó người dùng được chỉ định các thông số a (độ dài 2 đoạn 2 bên), Layer1 và Layer2. Mong cả nhà giúp đỡ!
  • 0
Share your knowledge. It is a way to achieve immortality !

***

PS: Nếu bài viết của mình có ích, xin hãy "Bình chọn cho bài viết này" nhé :D

#2 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 13 May 2011 - 12:01 AM

Em có một vấn đề như sau:
Có một số các đường thẳng nằm trong cùng một layer ...

Em muốn chia mỗi đoạn thẳng trong số các đoạn thẳng này thành 3 đoạn thẳng nhỏ :

Em muốn viết một lisp, trong đó người dùng được chỉ định các thông số a (độ dài 2 đoạn 2 bên), Layer1 và Layer2. Mong cả nhà giúp đỡ!

Vậy rốt cục là bạn muốn tự viết nhưng thiếu ý tưởng hay muốn nhờ người khác viết ? :)
  • 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 pdle

pdle

    biết lệnh mtext

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

Đã gửi 13 May 2011 - 12:09 AM

Vậy rốt cục là bạn muốn tự viết nhưng thiếu ý tưởng hay muốn nhờ người khác viết ? :)

Em muốn tự viết nhưng khó khăn ở một số điểm sau:
+) Em không biết làm thế nào để khi sử dụng mình có thể chọn các layer
+) Cắt các đoạn thẳng như thế nào (dùng lệnh break hay là theo tọa độ điểm)
+) Chuyển một đoạn thẳng từ một layer này sang một layer khác

Vì em còn biết ít lisp quá, mà đang cần gấp, anh nào tiện viết hộ em thì càng tốt ạ :D
  • 0
Share your knowledge. It is a way to achieve immortality !

***

PS: Nếu bài viết của mình có ích, xin hãy "Bình chọn cho bài viết này" nhé :D

#4 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 13 May 2011 - 12:37 AM

Em muốn tự viết nhưng khó khăn ở một số điểm sau:
+) Em không biết làm thế nào để khi sử dụng mình có thể chọn các layer
+) Cắt các đoạn thẳng như thế nào (dùng lệnh break hay là theo tọa độ điểm)
+) Chuyển một đoạn thẳng từ một layer này sang một layer khác

Vì em còn biết ít lisp quá, mà đang cần gấp, anh nào tiện viết hộ em thì càng tốt ạ :D

Đỏ : có nhiều cách để gán 1 đối tượng theo 1 layer nào đó :
- Có thể dùng (setvar "clayer" "tên layer") -> Kể từ sau bước này các đối tượng tạo mới có layer mặc định là "tên layer" (thông thường)
- Có thể tạo đối tượng trước rồi dùng lệnh Change với Properties là Layer, Object là last
- Dùng entmake, entmakex tạo đối tượng theo 1 layer từ đầu
..
Xanh : Cắt cũng vẫn phải cung cấp tọa độ cho điểm cắt. Thường thì không dùng cách cắt vì khó xử lý các đổi tượng sau khi cắt.Do đối tượng bạn yêu cầu là Line, nên có thể vẽ lại Line đó bằng 3 đoạn

P/S : Muộn rồi, mình viết giùm bạn cái khung thô, còn các phần kiểm tra lỗi như : không có layer,a lớn hơn Line.. bạn tự lo nhé
(defun c:test()
(setq la1 (getstring "\nLayer 1 :")
la2 (getstring "\nLayer 2 :")
a (getreal "\n a :"))
(prompt "\nChon Line")
(foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "LINE"))))))
(setq 1st (acet-dxf 10 (entget ent)) 2nd (acet-dxf 11 (entget ent)))
(Line 1st (setq tmp1 (polar 1st (angle 1st 2nd) a)) la1)
(Line 2nd (setq tmp2 (polar 2nd (angle 2nd 1st) a)) la1)
(Line tmp1 tmp2 la2)
(entdel ent)
)
)
(defun Line (p1 p2 Lay)(entmakex (list (cons 0 "LINE")(cons 10 p1)(cons 11 p2)(cons 8 Lay))))

  • 2

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


#5 pdle

pdle

    biết lệnh mtext

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

Đã gửi 13 May 2011 - 12:48 AM

Cảm ơn bạn nhiều nhá :)
  • 0
Share your knowledge. It is a way to achieve immortality !

***

PS: Nếu bài viết của mình có ích, xin hãy "Bình chọn cho bài viết này" nhé :D

#6 hoàngbìnhan

hoàngbìnhan

    biết lệnh move

  • Members
  • PipPipPip
  • 128 Bài viết
Điểm đánh giá: 24 (tàm tạm)

Đã gửi 13 May 2011 - 09:52 AM

Cảm ơn bạn nhiều nhá :)

Thay đổi từ anh sang bạn!
  • 0

#7 pdle

pdle

    biết lệnh mtext

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

Đã gửi 13 May 2011 - 01:32 PM

Thay đổi từ anh sang bạn!

Quan là lời cảm ơn chân thành, còn anh hay bạn thì cũng tương đối thôi mà :D
  • 0
Share your knowledge. It is a way to achieve immortality !

***

PS: Nếu bài viết của mình có ích, xin hãy "Bình chọn cho bài viết này" nhé :D