Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] Lisp Move đối tượng hàng loạt được chọn trước


  • Please log in to reply
13 replies to this topic

#1 Mr Việt

Mr Việt

    biết zoom

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

Đã gửi 15 June 2013 - 11:38 AM

Nhờ các bác viết dùm em Lisp Move các đối tượng được chọn trước ở chế độ truy bắt điểm Insertion, Move về bắt vuông góc với đoạn thẳng được chỉ định cần Move các đối tượng đến.

Thank all !!!

 

Mình gửi kèm File trước và sau khi Move, trong đó có nội dung yêu cầu

 

http://www.cadviet.c...5_viet_lisp.dwg

 

 

https://docs.google....dit?usp=sharing


  • 0
Phạm Bằng Việt
ĐT: 0924.246.357 - 0942.456.567
Y!M: tvdotaco

#2 Mr Việt

Mr Việt

    biết zoom

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

Đã gửi 16 June 2013 - 10:51 AM

Các cao thủ giúp em với


  • 0
Phạm Bằng Việt
ĐT: 0924.246.357 - 0942.456.567
Y!M: tvdotaco

#3 duy267

duy267

    biết vẽ point

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

Đã gửi 16 June 2013 - 11:02 AM

Download không đươc bạn ơi.


  • 0

#4 Mr Việt

Mr Việt

    biết zoom

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

Đã gửi 16 June 2013 - 11:20 AM

duy267 cho mình mail mình gửi qua cho, chắc server đang bị lỗi


  • 0
Phạm Bằng Việt
ĐT: 0924.246.357 - 0942.456.567
Y!M: tvdotaco

#5 duy267

duy267

    biết vẽ point

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

Đã gửi 16 June 2013 - 11:22 AM

Cứ gửi link lên đây đi mọi người sẽ giúp bạn.


  • 0

#6 Mr Việt

Mr Việt

    biết zoom

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

Đã gửi 16 June 2013 - 11:25 AM

Mình đã gửi Link Drive rồi, mọi người giúp mình với


  • 0
Phạm Bằng Việt
ĐT: 0924.246.357 - 0942.456.567
Y!M: tvdotaco

#7 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 16 June 2013 - 11:32 AM

Nhờ các bác viết dùm em Lisp Move các đối tượng được chọn trước ở chế độ truy bắt điểm Insertion, Move về bắt vuông góc với đoạn thẳng được chỉ định cần Move các đối tượng đến.

Thank all !!!

 

Mình gửi kèm File trước và sau khi Move, trong đó có nội dung yêu cầu

 

http://www.cadviet.c...5_viet_lisp.dwg

 

 

https://docs.google....dit?usp=sharing

Tôi đã xem bản vẽ của bạn nhưng không hiểu dòng màu đỏ ở trên?

Hình như bộ 3 gồm 1 point + 2 text là đi liền nhau, nếu move là move nguyên cả bộ 3 ấy?


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


#8 Mr Việt

Mr Việt

    biết zoom

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

Đã gửi 16 June 2013 - 12:22 PM

Move cả 3 cũng được hoặc Text hay point, nói chung do mình chọn cái nào thì Move cái đó.

 

Bắt tâm điểm của đối tượng cần Move


  • 0
Phạm Bằng Việt
ĐT: 0924.246.357 - 0942.456.567
Y!M: tvdotaco

#9 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 16 June 2013 - 01:03 PM

Lisp move từng nhóm đối tượng đến 1 Line cho trước.

Có 4 cách chọn kiểu đối tượng để Move: Point (nhập "P"), Text phía trên (nhập "TT"), Text phía dưới (nhập "TD") và cả 3 đối tượng (nhập "3").

Lệnh dùng: HA

;Doan Van Ha - CADViet.com - Ngay 16/6/2013
;Chuc nang: Move tung nhom doi tuong den 1 Lien.
(defun C:HA( / kieu typ lay ent ss p1 p2 pt z osm cmd)
 (command "undo" "be") (setq osm (getvar "osmode") cmd (getvar "cmdecho"))
 (initget "P TT TD 3")
 (setq kieu (getkword "\nKieu doi tuong can Move [point la P/text tren la TT/ text duoi la TD/tat ca la 3]: "))
 (cond
  ((= kieu "P") (setq typ "Point" lay "diem"))
  ((= kieu "TT") (setq typ "Text" lay "Tendiem"))
  ((= kieu "TD") (setq typ "Text" lay "Docao"))
  ((= kieu "3") (setq typ "Point,Text" lay "diem,Tendiem,Docao")))
 (if
  (and
   (setq ent (car (entsel "\nChon Line: ")))
   (princ "\nChon cac doi tuong can Move...")
   (setq ss (ssget (list (cons 0 typ) (cons 8 lay)))))
  (progn 
   (setvar "osmode" 0) (setvar "cmdecho" 0)
   (setq p1 (cdr (assoc 10 (entget ent))))
   (setq p2 (cdr (assoc 11 (entget ent))))
   (setq z -1)
   (repeat (sslength ss)
    (setq pt (cdr (assoc 10 (entget (ssname ss (setq z (1+ z)))))))
    (command "move" ss "" pt (FindPerpPoint p1 p2 pt)))))
 (setvar "osmode" osm) (setvar "cmdecho" cmd) (command "undo" "e") (princ))
(defun FindPerpPoint (p1 p2 q / x1 x2 x3 y1 y2 y3 z1 z2 z3 T4)
 (setq x1 (car p1) x2 (car p2) x3 (car q)
       y1 (cadr p1) y2 (cadr p2) y3 (cadr q)
       z1 (caddr p1) z2 (caddr p2) z3 (caddr q)
       T4 (/ (+ (* (- x2 x1) (- x3 x1)) (* (- y2 y1) (- y3 y1)) (* (- z2 z1) (- z3 z1)))
             (+ (* (- x2 x1) (- x2 x1)) (* (- y2 y1) (- y2 y1)) (* (- z2 z1) (- z2 z1)))))
 (list (+ x1 (* T4 (- x2 x1))) (+ y1 (* T4 (- y2 y1))) (+ z1 (* T4 (- z2 z1)))))


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


#10 Mr Việt

Mr Việt

    biết zoom

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

Đã gửi 16 June 2013 - 01:45 PM

Thank bác Doan Van Ha đã viết giúp, nhưng chưa được như ý muốn của em, nó vẫn chưa Move về điểm vuông góc với đoạn thẳng như file em gửi kèm.


  • 0
Phạm Bằng Việt
ĐT: 0924.246.357 - 0942.456.567
Y!M: tvdotaco

#11 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 16 June 2013 - 01:51 PM

Vuông chứ nhỉ? Tôi test OK mà. Bạn cho ví dụ nhé?


  • 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 Mr Việt

Mr Việt

    biết zoom

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

Đã gửi 16 June 2013 - 01:57 PM

Nếu chọn từng đối tượng thì ok, nhưng nếu chọn toàn bộ đối tượng trong mặt cắt thì Move không vuông góc nữa.

Cụ thể là Move 1 bộ gồm 1 point + 2 Text thì ok, Move nhiều Point hoặc nhiều Text thì chỉ có 1 đối tượng vuông góc, các đối tượng khác không về điểm vuông góc với đoạn thẳng 


  • 0
Phạm Bằng Việt
ĐT: 0924.246.357 - 0942.456.567
Y!M: tvdotaco

#13 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 16 June 2013 - 03:20 PM

Srr, tôi viết gấp quá nên bị nhầm tí. Sửa lại đây!

;Doan Van Ha - CADViet.com - Ngay 16/6/2013
;Chuc nang: Move tung nhom doi tuong den 1 Lien.
(defun C:HA( / kieu typ lay ent ss p1 p2 pt z osm cmd)
 (command "undo" "be") (setq osm (getvar "osmode") cmd (getvar "cmdecho"))
 (initget "P TT TD 3")
 (setq kieu (getkword "\nKieu doi tuong can Move [point la P/text tren la TT/ text duoi la TD/tat ca la 3]: "))
 (cond
  ((= kieu "P") (setq typ "Point" lay "diem"))
  ((= kieu "TT") (setq typ "Text" lay "Tendiem"))
  ((= kieu "TD") (setq typ "Text" lay "Docao"))
  ((= kieu "3") (setq typ "Point,Text" lay "diem,Tendiem,Docao")))
 (if
  (and
   (setq ent (car (entsel "\nChon Line: ")))
   (princ "\nChon cac doi tuong can Move...")
   (setq ss (ssget (list (cons 0 typ) (cons 8 lay)))))
  (progn 
   (setvar "osmode" 0) (setvar "cmdecho" 0)
   (setq p1 (cdr (assoc 10 (entget ent))))
   (setq p2 (cdr (assoc 11 (entget ent))))
   (setq z -1)
   (repeat (sslength ss)
    (setq pt (cdr (assoc 10 (entget (ssname ss (setq z (1+ z)))))))
    (command "move" (ssname ss z) "" pt (FindPerpPoint p1 p2 pt)))))
 (setvar "osmode" osm) (setvar "cmdecho" cmd) (command "undo" "e") (princ))
(defun FindPerpPoint (p1 p2 q / x1 x2 x3 y1 y2 y3 z1 z2 z3 T4)
 (setq x1 (car p1) x2 (car p2) x3 (car q)
       y1 (cadr p1) y2 (cadr p2) y3 (cadr q)
       z1 (caddr p1) z2 (caddr p2) z3 (caddr q)
       T4 (/ (+ (* (- x2 x1) (- x3 x1)) (* (- y2 y1) (- y3 y1)) (* (- z2 z1) (- z3 z1)))
             (+ (* (- x2 x1) (- x2 x1)) (* (- y2 y1) (- y2 y1)) (* (- z2 z1) (- z2 z1)))))
 (list (+ x1 (* T4 (- x2 x1))) (+ y1 (* T4 (- y2 y1))) (+ z1 (* T4 (- z2 z1)))))


  • 2

* 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 Mr Việt

Mr Việt

    biết zoom

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

Đã gửi 16 June 2013 - 03:25 PM

Thank bác !!! Đã đúng ý em


  • 0
Phạm Bằng Việt
ĐT: 0924.246.357 - 0942.456.567
Y!M: tvdotaco