Đến nội dung


Hình ảnh
- - - - -

[yêu cầu] Lisp chia đoạn thẳng!


  • Please log in to reply
34 replies to this topic

#21 khongbietthihoi

khongbietthihoi

    biết zoom

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

Đã gửi 08 May 2013 - 09:36 AM

:D


  • 0

#22 lacvotinh_hp

lacvotinh_hp

    Chưa sử dụng CAD

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

Đã gửi 27 June 2013 - 08:29 PM

ank Anh Kangkung có thể viết giúp em 1 list đc không ạ

cũng như lít cdt2 của ank ở trên nhưung thay vì nhập độ dài đoạn thẳng ta có thể click điểm trực tiếp 

em có dùng thử list cdt1 của ank ở trên nhưng có 1 vấn đề là khi em chia đường đa tuyến cong thành nhiều đoạn thì nó không còn cong nữa mà là các đường thẳng 


  • 0

#23 Minhon_2013

Minhon_2013

    Chưa sử dụng CAD

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

Đã gửi 19 May 2014 - 04:54 PM

Sao tôi không dùng được Lisp này nhỉ ? . ở dòng command có câu này: ; error: bad argument type: lselsetp nil. Bạn nào giải thích hộ với, cám ơn nhiều.


  • 0

#24 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 19 May 2014 - 05:38 PM

Cái lisp này chỉ dùng với polyline thôi, bạn chọn cái khác nó báo lỗi.


  • 1

#25 pphung183

pphung183

    biết dimstyle

  • Members
  • PipPipPipPipPip
  • 384 Bài viết
Điểm đánh giá: 425 (tốt)

Đã gửi 20 June 2014 - 04:47 PM

Nhầm lẫn về các loại hình polyline khác nhau mà bạn nhìn thấy trong AutoCAD?

Từ quan điểm người dùng cuối có 3 loại polyline được liệt kê trong lệnh PROPERTIES, mặc dù chỉ có hai "thực thể" các loại.

    
polyline - đây là một thực thể LWPOLYLINE, luôn luôn 2D.
    
Polyline 2d - đây là một thực thể polyline, cũng 2D.
    
3d polyline - đây là một thực thể polyline, thường 3D, với mỗi đỉnh ở độ cao khác nhau. Có thể có một "3d polyline" và có mỗi đỉnh ở độ cao tương tự.

Nếu bạn sử dụng lệnh LIST trên bất kỳ polyline, bạn sẽ chỉ nhìn thấy
tên thực thể (POLYLINE hoặc LWPOLYLINE).

Thực thể polyline là loại ban đầu. Các đơn vị LWPOLYLINE được giới thiệu vào R14.

Nếu PLINETYPE = 0 (không), sau đó các lệnh PLINE sẽ tạo ra các thực thể polyline.
Nếu PLINETYPE = 1 hoặc 2, sau đó lệnh PLINE sẽ tạo ra các thực thể LWPOLYLINE.

Để tạo ra polylines 3D, sử dụng lệnh 3DPOLY.

Để chuyển đổi giữa POLYLINE và LWPOLYLINE thực thể, sử dụng lệnh CONVERTPOLY.

Nếu bạn đang sử dụng AutoLISP, bạn chỉ cần phải lo lắng về các tên thực thể (POLYLINE và LWPOLYLINE.) Một "3d polyline" chỉ đơn giản là một thực thể polyline với một lá cờ tập đặc biệt. Khi lá cờ này được thiết lập, mỗi sub-entity đỉnh có thể được thiết lập để một độ cao khác nhau.

Tùy thuộc vào những gì khác mà bạn có thể làm, bạn cũng có thể nhìn thấy
những cái tên như:
Acad3DPolyline, hoặc AcDb3dPolyline
AcadPolyline, hoặc AcDb2dPolyline
AcadLWPolyline, hoặc AcDbPolyline

hầm lẫn về các loại hình polyline khác nhau mà bạn thấy trong AutoCAD?

Từ quan điểm người dùng cuối có 3 loại polyline được liệt kê trong lệnh PROPERTIES, mặc dù chỉ có hai "thực thể" các loại.

    
polyline - đây là một thực thể LWPOLYLINE, luôn luôn 2D.
    
Polyline 2d - đây là một thực thể polyline, cũng 2D.
    
3d polyline - đây là một thực thể polyline, thường 3D, với mỗi đỉnh ở độ cao khác nhau. Có thể có một "3d polyline" và có mỗi đỉnh ở độ cao tương tự.

Nếu bạn sử dụng lệnh LIST trên bất kỳ polyline, bạn sẽ chỉ nhìn thấy
tên thực thể (POLYLINE hoặc LWPOLYLINE).

Thực thể polyline là loại ban đầu. Các đơn vị LWPOLYLINE được giới thiệu vào R14.

Nếu PLINETYPE = 0 (không), sau đó các lệnh PLINE sẽ tạo ra các thực thể polyline.
Nếu PLINETYPE = 1 hoặc 2, sau đó lệnh PLINE sẽ tạo ra các thực thể LWPOLYLINE.

Để tạo ra polylines 3D, sử dụng lệnh 3DPOLY.

Để chuyển đổi giữa POLYLINE và LWPOLYLINE thực thể, sử dụng lệnh CONVERTPOLY.

Nếu bạn đang sử dụng AutoLISP, bạn chỉ cần phải lo lắng về các tên thực thể (POLYLINE và LWPOLYLINE.) Một "3d polyline" chỉ đơn giản là một thực thể polyline với một lá cờ tập đặc biệt. Khi lá cờ này được thiết lập, mỗi sub-entity đỉnh có thể được thiết lập để một độ cao khác nhau.

Tùy thuộc vào những gì khác mà bạn có thể làm, bạn cũng có thể nhìn thấy
những cái tên như:
Acad3DPolyline, hoặc AcDb3dPolyline
AcadPolyline, hoặc AcDb2dPolyline
AcadLWPolyline, hoặc AcDbPolyline

  • 0

#26 leetunghoanh

leetunghoanh

    biết pan

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

Đã gửi 30 January 2016 - 05:18 PM

bạn KangKung  có thể nâng cấp chương trình dùm mình với :

 

Nếu chọn đối tượng là arc thì sẽ tự động convert đối tượng đó sang pline rùi mới thực hiện lệnh chia đoạn thẳng

 

việc này có thể thưc hiện thủ công bằng dùng pedit trước khi dùng lisp của bạn nhưng vậy thì hơi tốn công quá

 

Thanks !


  • 0

#27 leetunghoanh

leetunghoanh

    biết pan

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

Đã gửi 31 January 2016 - 11:34 AM

Hi, mình tự mài mò sửa nhưng bị vướng chổ điều kiện cho hàm if

 

mọi người gúp mình thực hiện thêm  logicExpr của hàm if với, mình mới tìm hiểu autolisp nên ko rành lăm, ko biết điều kiện để xác định đối tượng là arc phải viết thế nào

 

 

(setq taphop(ssget '((0 . "ARC,LINE,POLYLINE,LWPOLYLINE"))))
;=======================
;start if
;if taphop is arc

(if ..........................

; moi người giúp mình logicExpr chổ này để xác định đối tượng taphop là arc

 

  (command ".pedit" "M" taphop "" "" "")

  (princ "\n Object Arc converted to Polyline, Please select this object again")

  (setq taphop(ssget '((0 . "ARC,LINE,POLYLINE,LWPOLYLINE"))))

;if taphop is not arc => don't do anything

) ;end if

;=======================


  • 0

#28 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 01 February 2016 - 01:44 PM

Hi, mình tự mài mò sửa nhưng bị vướng chổ điều kiện cho hàm if

 

mọi người gúp mình thực hiện thêm  logicExpr của hàm if với, mình mới tìm hiểu autolisp nên ko rành lăm, ko biết điều kiện để xác định đối tượng là arc phải viết thế nào

 

 

(setq taphop(ssget '((0 . "ARC,LINE,POLYLINE,LWPOLYLINE"))))
;=======================
;start if
;if taphop is arc

(if ..........................

; moi người giúp mình logicExpr chổ này để xác định đối tượng taphop là arc

 

  (command ".pedit" "M" taphop "" "" "")

  (princ "\n Object Arc converted to Polyline, Please select this object again")

  (setq taphop(ssget '((0 . "ARC,LINE,POLYLINE,LWPOLYLINE"))))

;if taphop is not arc => don't do anything

) ;end if

;=======================

Hề hề hề,

Cứ theo cái logic của bạn là : ;if taphop is not arc => don't do anything

thì sao phải khổ vậy?????

Chỉ dơn giản là hãy chọn tập hợp chỉ bao gồm các arc là xong. Vậy thì chỉ cần  (setq taphop(ssget '((0 . "ARC"))))


  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#29 leetunghoanh

leetunghoanh

    biết pan

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

Đã gửi 01 February 2016 - 02:28 PM

hi tại cái lisp của bạn kangkung ko dung đuoc cho arc nên mình mới dùng thủ thuật này tức ,mà bạn biêt thì chỉ mình vơi,cái này mình cung muốn biết thêm cách xác đinh đuoc đối tượng mình chon là arc như thế nào
  • 0

#30 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 315 (khá)

Đã gửi 01 February 2016 - 05:26 PM

Bạn tham khảo:

(defun c:tt  (/ els ent ety lst sodem soptu taphop)
 (if (setq taphop (ssget '((0 . "*LINE,ARC"))))
  (progn (setq soptu (sslength taphop)
               sodem    0)
         (repeat soptu
          (setq ent (ssname taphop sodem)
                lst (assoc 0 (entget ent))
                ety (cdr lst))
          (cond ((eq ety "LWPOLYLINE") (princ (strcat "\nEm la:" ety)) (Thuc_hien_gi_do))
                ((eq ety "POLYLINE") (princ (strcat "\nEm la:" ety)) (Thuc_hien_gi_do))
                ((eq ety "LINE") (princ (strcat "\nEm la:" ety)) (Thuc_hien_gi_do))
                ((eq ety "ARC") (princ (strcat "\nEm la:" ety)) (Thuc_hien_gi_do)))
          (setq sodem (1+ sodem)))))
 (princ))
(defun Thuc_hien_gi_do () (princ ". Anh muon lam gi em?"))

+ Trong lsp của KangKung bạn có thể thay dòng này: (setq vlaobj (vlax-ename->vla-object obj)) bằng cụm này:

(if (wcmatch (cdr (assoc 0 (entget obj))) "ARC,LINE")
   (progn (command "_.PEDIT" obj "Y" "")
          (setq obj    (entlast)
                vlaobj (vlax-ename->vla-object obj)))
   (setq vlaobj (vlax-ename->vla-object obj)))

+ Sử dụng theo hướng này thì ARC sau khi chia nó không cong nữa mà thành Pline gấp khúc.


  • 1

#31 leetunghoanh

leetunghoanh

    biết pan

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

Đã gửi 02 February 2016 - 08:32 AM

thật là toẹt cú mèo merci quocmanh04tt
  • 0

#32 Đỗ Hà

Đỗ Hà

    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 September 2016 - 10:13 AM

tớ mới học cad. vẽ hình đơn giản thôi bạn nào chỉ giúp tớ chia một đoạn thẳng thành nhiều đoạn nhỏ hơn????

(kích thước các đoạn không bằng nhau)


  • 0

#33 HUNGMETRO

HUNGMETRO

    biết vẽ line

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

Đã gửi 05 December 2016 - 02:39 PM

Xin mọi người trên diễn đàn giúp đỡ viết lisp:

Mình gặp một trường hợp trong file Cad có các đoạn thẳng có chiều dài =0. ((line (x1=x2, y1=y2) và polyline cũng có  (polyline (x1=x2, y1=y2))

mong các cao thủ trên diễn đàn viết giùm một file lisp tìm và lọc ra các đoạn thẳng đó

Đây là file Cad của mình, các lines và polylines mình đã đánh dấu trong vòng tròn màu tím, Xin cảm ơn diễn đàn.


  • 0

#34 Bee

Bee

    biết lệnh extend

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

Đã gửi 05 December 2016 - 04:19 PM

Cần gì Lisp. Chọn Quick select / LINE or PLINE / LENGTH = 0 là chọn hết cái nào cần chọn mà. !


  • 1

#35 nhunha_pro279

nhunha_pro279

    biết vẽ line

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

Đã gửi 06 December 2016 - 10:24 AM

Mình có bản vẽ như sau: https://drive.google...ve/u/0/my-drive. Nhờ các cao thủ viết lisp chia đoạn thẳng gốc được giới hạn bởi các đường vuông góc với đường chuẩn được không ạ?


  • 0