Đến nội dung


Hình ảnh
- - - - -

[ Yêu cầu ] Nhờ viết lisp vẽ đường thẳng vuông góc với Pline


  • Please log in to reply
41 replies to this topic

#1 hoacomay70

hoacomay70

    biết vẽ circle

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

Đã gửi 25 February 2014 - 09:08 AM

Em làm đường nên rất hay phải tính đặt cọc tiêu, biển báo với lý trình xác định, mỗi lần làm như vậy đều mất công đo khoảng cách theo tim tuyến là đường Pline rất mất công để đảm báo tính chính xác, nên em nhờ các anh chị có thể viết cho em lisp để làm cho đơn giản hơn.:

- Có đường Pline là đường tim tuyến cho sẵn và một đường thẳng vuông góc xác định vị trí cho trước. Khi chọn hai đường này, và nhập khoảng cách theo đường Pline, cad sẽ tự động vẽ ra đường thẳng vuông góc với Pline.

Em xin cảm ơn.


  • 0

#2 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 25 February 2014 - 09:25 AM

Measure Block hoặc Arrray Path vớiCAD 2012 trở đi  :)


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

hoacomay70

    biết vẽ circle

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

Đã gửi 25 February 2014 - 10:39 AM

Measure Block hoặc Arrray Path vớiCAD 2012 trở đi  :)

Bác ơi em cảm ơn bác rất nhiều. Bác cho em hỏi thêm chút cách dùng lệnh Array Path, em chỉ muốn vẽ một đường thẳng, lệnh nó lại rải cả đường Pline em chọn, em phải phá ra rồi lại xóa đi hơi mất công, em mò mãi vẫn chưa ra cách, bác chỉ giúp em được không?


  • 0

#4 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 25 February 2014 - 10:44 AM

Bạn diễn đạt hơi khó hiểu. Có thể trên 1 file Cad đ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.


#5 nguyendbk48

nguyendbk48

    biết vẽ line

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

Đã gửi 25 February 2014 - 10:45 AM

nếu bác offset đường pline ra 1 khoảng rồi extent cái cọc tim ra liệu có đc k?


  • 0

Shop giày dép thời trang cao cấp XUDI.VN
Website: www.xudi.vn
Hotline: 0917.17.55.89
Địa chỉ: KĐT Trung Văn - Q.Nam Từ Liêm - TP.Hà Nội
___________________________________________________
Giày da nam, Giày da nam Hà Nội


#6 hoacomay70

hoacomay70

    biết vẽ circle

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

Đã gửi 25 February 2014 - 10:54 AM

Bạn diễn đạt hơi khó hiểu. Có thể trên 1 file Cad đi.

Bác ơi nó gần giống lệnh array một đường thẳng vuông góc với một đường Pline cho trước theo đường Pline ấy với khoảng cách xác định, mà em array nó toàn rải cả đường Pline của em, em chỉ muốn nó ra một đối tượng thôi, mà đối tượng này cũng vuông góc với Pilne 


  • 0

#7 hoacomay70

hoacomay70

    biết vẽ circle

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

Đã gửi 25 February 2014 - 10:56 AM

nếu bác offset đường pline ra 1 khoảng rồi extent cái cọc tim ra liệu có đc k?

Là sao hở bác, em không hiểu? Bác giải thích rõ hơn cho em được không?


  • 0

#8 nguyendbk48

nguyendbk48

    biết vẽ line

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

Đã gửi 25 February 2014 - 11:09 AM

Ý mình là đường tim tuyến b có, giờ b đưa vào cell để chèn các cọc (muốn chèn biển báo), rồi đưa lại tệp NTD, xuất ra cọc tại các vị trí đó, vậy là bạn có cái mình cần. K biết có đúng ý b k?


  • 0

Shop giày dép thời trang cao cấp XUDI.VN
Website: www.xudi.vn
Hotline: 0917.17.55.89
Địa chỉ: KĐT Trung Văn - Q.Nam Từ Liêm - TP.Hà Nội
___________________________________________________
Giày da nam, Giày da nam Hà Nội


#9 nguyenngoc971

nguyenngoc971

    biết dimstyle

  • Members
  • PipPipPipPipPip
  • 385 Bài viết
Điểm đánh giá: 74 (tàm tạm)

Đã gửi 25 February 2014 - 11:15 AM

Đọc đi đọc lại vẫn rất mơ hồ về câu hỏi của bạn.Bạn xem phía dưới có cái nào dùng được thì cứ làm theo nhé:

 

114123_untitledsfsdafsd.gif


  • 0

114123_building_folds_demolition.gif


#10 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 25 February 2014 - 11:15 AM

Có mỗi file cad để thể hiện ý tưởng mà cũng không có thì chịu 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.


#11 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 25 February 2014 - 11:21 AM

http://www.cadviet.c...1-pline-bat-ki/


  • 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


#12 hoacomay70

hoacomay70

    biết vẽ circle

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

Đã gửi 25 February 2014 - 11:47 AM

Có mỗi file cad để thể hiện ý tưởng mà cũng không có thì chịu thôi.

Chắc em chưa biết cách diễn đat. Em có một đường Pline và một đường thẳng vuông góc với đường Pline đó, và một giá trị khoảng cách cho trước. Em muốn vẽ một đường thẳng mới : vuông góc với đường Pline, khoảng cách giữa chân hai đường vuông góc theo Pline là giá trị khỏa125447_cad1_1.pngng cách cho trước trên. Em xin cảm ơn


  • 0

#13 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 25 February 2014 - 12:30 PM

Array Path đường thẳng cho trước theo Pline, chọn dãy array, bật bảng thuộc tính lên (Ctrl+1) -> Chỉnh Method là Measure, Fill Entire Path về No, chọn số lượng là 2, chỉnh khoảng cách mong muốn ở Item Spacing


  • 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


#14 namnhim

namnhim

    biết vẽ polygon

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

Đã gửi 26 February 2014 - 10:37 PM

Chắc em chưa biết cách diễn đat. Em có một đường Pline và một đường thẳng vuông góc với đường Pline đó, và một giá trị khoảng cách cho trước. Em muốn vẽ một đường thẳng mới : vuông góc với đường Pline, khoảng cách giữa chân hai đường vuông góc theo Pline là giá trị khỏa125447_cad1_1.pngng cách cho trước trên. Em xin cảm ơn

Mình có cái này để vẽ được đường vuông góc với đối tượng mẫu là Line, bạn có thể nhờ các bác sửa giúp để có thể dùng được cả với Pline!  (oh, nhầm không nhìn kỹ hình  :) )

(defun c:Per (/ #Obj #Point #Ang)
   (and (setq #Obj (entsel "\nSelect line: "))
        (eq "LINE" (cdr (assoc 0 (entget (car #Obj)))))
        (or (setq #Point (getpoint "\nSpecify first point <At Selection>: "))
            (setq #Point (vlax-curve-GetClosestPointTo (car #Obj) (cadr #Obj)))
        ) ;_ or
        (setq #Ang (angtos (+ (* 0.5 pi) (vla-get-angle (vlax-ename->vla-object (car #Obj)))) 0 4))
        (vl-cmdf "_.line" "_non" #Point (strcat "<" #Ang) PAUSE "")
   ) ;_ and
   (princ)
 ) ;_ defun 

  • 0

#15 nguyendbk48

nguyendbk48

    biết vẽ line

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

Đã gửi 26 February 2014 - 10:40 PM

Cái này số lượng ít k sao, nhiều hơi mệt
Bạn lợi dụng tính năng xuất tuyến nova để làm nếu số liệu tim tuyến bạn đã có ( R,Lct, alpha...)

K có thì thủ công vậy. thân


  • 0

Shop giày dép thời trang cao cấp XUDI.VN
Website: www.xudi.vn
Hotline: 0917.17.55.89
Địa chỉ: KĐT Trung Văn - Q.Nam Từ Liêm - TP.Hà Nội
___________________________________________________
Giày da nam, Giày da nam Hà Nội


#16 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 27 February 2014 - 09:21 PM

Thử file này, bạn sau khi chon pline va đường thẳng thì phải chỉ điểm cuối của pline để ct biết rải về phía nào.http://www.cadviet.c...168_tmp1_10.lsp


  • 0

#17 aliosa

aliosa

    biết vẽ polygon

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

Đã gửi 27 February 2014 - 10:58 PM

Đúng là bài toán giao thông. Xác định một điểm theo lý trình (khoảng cách) đây mà.

Mình không dùng lisp vì Land or Civil có sẵn.


  • 0

#18 hoacomay70

hoacomay70

    biết vẽ circle

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

Đã gửi 07 April 2014 - 11:50 AM

Thử file này, bạn sau khi chon pline va đường thẳng thì phải chỉ điểm cuối của pline để ct biết rải về phía nào.http://www.cadviet.c...168_tmp1_10.lsp

Cảm ơn bác rất nhiều, lisp hay quá lun, mà bác ơi bác có thể chỉnh giúp em để em có thể nhập vào số lượng đường cẩn rải không ạ?


  • 0

#19 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 07 April 2014 - 09:20 PM

Của bạn đây.

 

(defun c:test(/ cd pl obj dd dait cl sl n os ki )
  (defun ad(v p1 p2 / a1)
    (abs (- (vlax-curve-getDistAtPoint (setq a1 (vlax-ename->vla-object v)) (vlax-curve-getClosestPointTo a1 p2))
  (vlax-curve-getDistAtPoint a1 (vlax-curve-getClosestPointTo a1 p1)))))
  
  (defun getp(v dis)
     (vlax-curve-getPointAtDist (vlax-ename->vla-object v) dis))
  
  (defun thgoc (ent pt / param obj) 
    (if (setq param (vlax-curve-getParamAtPoint (setq obj (vlax-ename->vla-object ent)) pt))
      (- (angle '(0 0 0) (vlax-curve-getFirstDeriv obj param))  (/ pi 2))
      nil))
  
  (defun daitc(v / obj)    
      (vlax-curve-getDistAtParam (setq obj (vlax-ename->vla-object v)) (vlax-curve-getEndParam obj)))
  
  ;;;
  
  (setq pl (car (entsel "\nChon Polyline:"))
li (car (entsel "\nChon duong thang vuong goc voi Polyline:"))
dail (daitc li)
dd (getpoint "\nDiem cuoi cua Polyline:")
cd (getreal "\nNhap buoc de rai:")
obj (vlax-ename->vla-object pl) 
dg (vlax-curve-getClosestPointTo obj (acet-dxf 10 (entget li)))
sl (getint "\nSo luong coc rai")
ct (vlax-curve-getDistAtPoint obj dg)
n 0
os (getvar "OSMODE"))
  (if (< (distance dd (vlax-curve-getStartPoint obj)) (distance dd (vlax-curve-getEndPoint obj)))
    (setq ki nil) (setq ki t))
  (setvar "OSMODE" 0)
  (repeat sl         
    (command "line"
    (setq dg1 (if ki (getp pl (+ ct (* (setq n (1+ n)) cd)))
     (getp pl (- ct (* (setq n (1+ n)) cd)))))   
    (polar dg1 (thgoc pl dg1) dail) ""))
  (setvar "OSMODE" os)
  (princ)
)

  • 1

#20 hoacomay70

hoacomay70

    biết vẽ circle

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

Đã gửi 08 April 2014 - 04:59 PM

Của bạn đây.

 

 

(defun c:test(/ cd pl obj dd dait cl sl n os ki )
  (defun ad(v p1 p2 / a1)
    (abs (- (vlax-curve-getDistAtPoint (setq a1 (vlax-ename->vla-object v)) (vlax-curve-getClosestPointTo a1 p2))
  (vlax-curve-getDistAtPoint a1 (vlax-curve-getClosestPointTo a1 p1)))))
  
  (defun getp(v dis)
     (vlax-curve-getPointAtDist (vlax-ename->vla-object v) dis))
  
  (defun thgoc (ent pt / param obj) 
    (if (setq param (vlax-curve-getParamAtPoint (setq obj (vlax-ename->vla-object ent)) pt))
      (- (angle '(0 0 0) (vlax-curve-getFirstDeriv obj param))  (/ pi 2))
      nil))
  
  (defun daitc(v / obj)    
      (vlax-curve-getDistAtParam (setq obj (vlax-ename->vla-object v)) (vlax-curve-getEndParam obj)))
  
  ;;;
  
  (setq pl (car (entsel "\nChon Polyline:"))
li (car (entsel "\nChon duong thang vuong goc voi Polyline:"))
dail (daitc li)
dd (getpoint "\nDiem cuoi cua Polyline:")
cd (getreal "\nNhap buoc de rai:")
obj (vlax-ename->vla-object pl) 
dg (vlax-curve-getClosestPointTo obj (acet-dxf 10 (entget li)))
sl (getint "\nSo luong coc rai")
ct (vlax-curve-getDistAtPoint obj dg)
n 0
os (getvar "OSMODE"))
  (if (< (distance dd (vlax-curve-getStartPoint obj)) (distance dd (vlax-curve-getEndPoint obj)))
    (setq ki nil) (setq ki t))
  (setvar "OSMODE" 0)
  (repeat sl         
    (command "line"
    (setq dg1 (if ki (getp pl (+ ct (* (setq n (1+ n)) cd)))
     (getp pl (- ct (* (setq n (1+ n)) cd)))))   
    (polar dg1 (thgoc pl dg1) dail) ""))
  (setvar "OSMODE" os)
  (princ)
)

Cảm ơn bác nhiều lắm ạ, :D lisp hay wwoa' lun


  • 0