Đến nội dung


Hình ảnh
- - - - -

xin giúp lisp nối các block bằng pline


  • Please log in to reply
13 replies to this topic

#1 hmt

hmt

    biết lệnh scale

  • Members
  • PipPipPip
  • 146 Bài viết
Điểm đánh giá: -11 (hơi kém)

Đã gửi 10 September 2014 - 11:38 AM

chao  a chị e trên 4rum. Hiện e cần mọi ng giúp đỡ 1 chút ạ, e có 1 bản vẽ có khá nhiều block mà cần nối các block này lại bằng pline e có tìm đc lisp b2pl của bác ket nhưng toàn hiện lỗi:  no function definition: ST:SS->LISTBASEPOINT.  mong mọi ng giúp e . Bản vẽ và lisp của bác ketxu e xin up dưới đây: 

 http://www.cadviet.c...new_block_1.dwg

 

http://www.cadviet.c...77_b2pl_b2t.lsp


  • 0

#2 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 10 September 2014 - 03:06 PM

chao  a chị e trên 4rum. Hiện e cần mọi ng giúp đỡ 1 chút ạ, e có 1 bản vẽ có khá nhiều block mà cần nối các block này lại bằng pline e có tìm đc lisp b2pl của bác ket nhưng toàn hiện lỗi:  no function definition: ST:SS->LISTBASEPOINT.  mong mọi ng giúp e . Bản vẽ và lisp của bác ketxu e xin up dưới đây: 

 http://www.cadviet.c...new_block_1.dwg

 

http://www.cadviet.c...77_b2pl_b2t.lsp

Hề hề hề,

Nối bằng cái chi cũng cần phải nói rõ nguyên tắc nối mới được. Nếu không nó nối tùm lum ra cái giống oẳn tà roằn thì biết kiện ai????

Hàm ST:SS=>BASEPOINTLIST của bác Ketxu là để láy ra các basepoint của các block rồi sắp xếp lại theo một trật tự nào đó. Cái trật tự này chưa hẳn đã giống cái bạn cần nên cho dù bạn có hàm này cũng cần phải check lại xem nó có khớp với yêu cầu của bạn hay không.

Nếu muốn có lisp bạn hãy nêu rõ yêu cầu mà bạn muốn bằng văn bản và hình vẽ cụ thể.


  • 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 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 10 September 2014 - 04:17 PM

Bạn dùng thử cái này, cái này cách làm khác không giống của bác Ket.

Đầu tiên chọn điểm chèn của block đầu tiên, rồi rê chuột đến đâu nó vẽ đến đó. Khi rê để ý cái hình vuông màu số 5, muốn tăng kích thước hình vuông bấm T (không cần enter, chỉ T thôi) , muốn giảm bấm G , muốn undo bấm U. Dứt lệnh mới bấm enter.

Khi rê thì dùng chuột giữa để zoom.

(defun c:apl(/ pnt ctro l done p1 p2 p3 p4 ss ssn tg os)
  (setq os (getvar 'osmode))
  (mapcar 'setvar (list 'osmode 'plinewid) '( 72 0))
  (setq pnt (getpoint "Chon diem dau:") 
ctro 5
tg 1
l nil
done nil)  
  (command "pline" pnt)
  (prompt "\nChon diem tiep theo <Tang/Giam/Undo>:")
  (while (and (setq pnt (grread t)) (not done))
    (cond ((= 5 (car pnt))
  (setq p1 (polar (polar (last pnt) 0 (* -0.5 ctro)) 1.5708 (* -0.5 ctro))
p2 (polar p1 0 ctro)
p3 (polar p2 1.5708 ctro)
p4 (polar p3 0 (- ctro)))
  (redraw) (grvecs (list 5 p1 p2 p2 p3 p3 p4 p4 p1))
  (if (and (setq ss (ssget "C" p1 p3 '(( 0 . "INSERT"))))
   (not (equal (last l) (ssname ss 0))))      
    (progn
      (setq ssn (ssname ss 0))
      (setq l (append l (list ssn)))
      (command (cdr (assoc 10 (entget ssn))))
     )
  )) 
  ((and (= 2 (car pnt)) (= (last pnt) 116)) (setq ctro (+ ctro tg)))
  ((and (= 2 (car pnt)) (= (last pnt) 103)) (setq ctro (- ctro tg)))
  ((and (= 2 (car pnt)) (= (last pnt) 117))
   (command "u")
   (setq l (vl-remove (last l) l)))
 
  ((or (and (= 2 (car pnt)) (or (= (last pnt) 13) (= (last pnt) 32))) (= 3 (car pnt)))
(setq done t))
    )
  )
  (command "") (redraw) (setvar 'osmode os)
  (princ)
)

  • 1

#4 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 10 September 2014 - 04:21 PM

Thêm 3 tí capslock nữa cho hoàn chỉnh kẻo lỡ user bật capslock thì không như ý muốn.


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#5 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 10 September 2014 - 04:25 PM

 Khổ với bác Ha ghê, user nếu lỡ bật caplock thì user ráng mà làm lại thôi, chứ bắt lsp phải chiều chuộng user thì mệt cho lsp quá!!  :wub:


  • 0

#6 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 10 September 2014 - 04:32 PM

 Khổ với bác Ha ghê, user nếu lỡ bật caplock thì user ráng mà làm lại thôi, chứ bắt lsp phải chiều chuộng user thì mệt cho lsp quá!!  :wub:

:lol: Chả là mới lướt qua thì thấy 3 chứ không phải 6. Mà cách đây mấy hôm tôi vừa ngoáy cái này, với 2n, nên làm khổ tí thôi. :lol:


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#7 hmt

hmt

    biết lệnh scale

  • Members
  • PipPipPip
  • 146 Bài viết
Điểm đánh giá: -11 (hơi kém)

Đã gửi 12 September 2014 - 08:49 PM

thanks 2 bác cái lisp của bác TOT dùng vẫn thấy lâu lâu bác ạ. hic nếu e có cả trăm cái block như vậy thì e rê cũng mỏi tay luôn :( liệu có thể nào chỉ cần quét qua các block là nó tự động nối lại dc không ạ.


  • 0

#8 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 12 September 2014 - 09:09 PM

Vậy chắc bạn phải chờ bác Ket sửa cho bạn rồi.
  • 0

#9 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 12 September 2014 - 09:24 PM

93 cái y/c rồi mà cái y/c thứ 94 rất chi là khó hiểu. Nối theo quy luật nào? Dù có 3 block hay 3 triệu block thì nếu y/c rõ ràng cũng có thể giải quyết nhanh thôi.  


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#10 hmt

hmt

    biết lệnh scale

  • Members
  • PipPipPip
  • 146 Bài viết
Điểm đánh giá: -11 (hơi kém)

Đã gửi 12 September 2014 - 10:46 PM

ví dụ như nối các block theo khoảng các giữa chúng. ví dụ khoảng cách giữa các block trong khoảng bao nhiêu sẽ đc nối lại với nhau. có thể viết như thế dc k ạ?


  • 0

#11 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 12 September 2014 - 10:52 PM

ví dụ như nối các block theo khoảng các giữa chúng. ví dụ khoảng cách giữa các block trong khoảng bao nhiêu sẽ đc nối lại với nhau. có thể viết như thế dc k ạ?

Tôi dòm bản vẽ của bạn rồi. Xem ra cách bạn muốn nối không giống với câu bạn nói ở trên.


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#12 hmt

hmt

    biết lệnh scale

  • Members
  • PipPipPip
  • 146 Bài viết
Điểm đánh giá: -11 (hơi kém)

Đã gửi 12 September 2014 - 11:48 PM

à đúng rồi nếu chỉ khoảng cách thôi thì chưa đủ , nối theo thứ tự tọa độ x tăng dần , nôi block có tọa độ x gần nhất lai với nhau ạ 


  • 0

#13 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 13 September 2014 - 07:30 AM

à đúng rồi nếu chỉ khoảng cách thôi thì chưa đủ , nối theo thứ tự tọa độ x tăng dần , nôi block có tọa độ x gần nhất lai với nhau ạ 

Cực kỳ lủng củng! Nếu cứ diễn đạt như thế thì nên dùng lisp của anh Tot là ổn rồi. Còn muốn 1 phát ăn ngay thì phải có quy luật thật rõ ràng.


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#14 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 13 September 2014 - 08:02 AM

Hề hề hề,

Nối bằng cái chi cũng cần phải nói rõ nguyên tắc nối mới được. Nếu không nó nối tùm lum ra cái giống oẳn tà roằn thì biết kiện ai????

Hàm ST:SS=>BASEPOINTLIST của bác Ketxu là để láy ra các basepoint của các block rồi sắp xếp lại theo một trật tự nào đó. Cái trật tự này chưa hẳn đã giống cái bạn cần nên cho dù bạn có hàm này cũng cần phải check lại xem nó có khớp với yêu cầu của bạn hay không.

Nếu muốn có lisp bạn hãy nêu rõ yêu cầu mà bạn muốn bằng văn bản và hình vẽ cụ thể.

-mí cái block đó nhoc chả thấy nó nó có quy tắc nào hết ^^, giống nhoc đi đo về phun điểm lên cứ cho là nó theo 1 phương mà ko có lược đồ đố biết đc nối thế nào :)


  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^