Đến nội dung


Hình ảnh
* * * * - 2 Bình chọn

[Đã xong] Lisp rải đối tượng theo đơờng dẩn.


  • Please log in to reply
88 replies to this topic

#81 chuthanhchi

chuthanhchi

    Chưa sử dụng CAD

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

Đã gửi 28 October 2014 - 12:00 PM

duy782006

bạn có cái lisp nào dạng như copy aray không bạn, mình muốn là nó copy aray theo số lượng mà không phải copy aray theo khoảng cách như lisp đang có

Nếu có thì bạn gửi cho mình xin nhé gmail của mình là KSXD112@gmail.com

Thanks you!!!!!!


  • 0

#82 enddie7542

enddie7542

    Chưa sử dụng CAD

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

Đã gửi 10 September 2015 - 03:16 PM

Đã chỉnh lại:
-Quay và trả trục tọa độ.
-Không chọn điểm chuẩn thì hỏi chọn miết chừng nào chọn thì mới thôi.
-Định nghĩa biến cục bộ cho khỏi đá.
-Thêm dòng (vl-load-com).

 

(Defun c:rdt (/ ss doituong dsl dc ddd chondd chieudaicuver diemdau krai chieudaidoan slc sl index d2 p2 d5 p5 d3 p3 dt l m)
(vl-load-com)
(command "undo" "be")
(command "ucs" "")
(chonnhomdoituong)
(choncuver)
(hoikieurai)
(command "ucs" "p")
(command "undo" "end")
  (princ)
)
;;;;;;;;;;;;;;;;;
(Defun chonnhomdoituong ()
  (princ "\nChon doi tuong rai:")
  (setq ss (ssget))

 (cond 
      ((= ss nil) (princ "\nChua chon duoc doi tuong nao:") (chonnhomdoituong))
      ((/= ss nil) 
 (setq dsl (sslength ss))
            (cond 
            ((= dsl 1) 
(setq doituong (ssname SS 0))
(setq doituong (entget doituong))
(setq KIEUDOITUONG (cdr (assoc 0 doituong)))
                   (cond 
                   ((= KIEUDOITUONG "INSERT") (setq dc (cdr (assoc 10 doituong))))
                   ((/= KIEUDOITUONG "INSERT") (chondiemchuandoituong))
                   );ketthuccondxemblock
                 );kethucdsl1
            ((/= dsl 1) (chondiemchuandoituong))
            );ketthuccondnho

);ketthucsetqdsl
 );ketthuccondtong  
  (princ)
)
;;;;;;;;;;;;;;;;;
(Defun chondiemchuandoituong ()
(setq dc (getpoint "\nChon diem goc: "))
 (cond 
      ((= dc nil) (princ "\nChua chon duoc diem goc:") (chondiemchuandoituong))
      ((/= ss nil))) 
  (princ)
)
;;;;;;;;;;;;;;;;;
(Defun choncuver ()

(setq ddd (entsel "\nChon duong dan:"))
(while
(or
(null ddd)
(or (= "TEXT" (cdr (assoc 0 (entget (car ddd))))) (= "MTEXT" (cdr (assoc 0 (entget (car ddd))))) (= "HATCH" (cdr (assoc 0 (entget (car ddd))))) (= "INSERT" (cdr (assoc 0 (entget (car ddd))))) (= "REGION" (cdr (assoc 0 (entget (car ddd))))) (= "DIMENSION" (cdr (assoc 0 (entget (car ddd)))))
)
)
(setq ddd (entsel "\nDoi tuong khong the lam duong dan! Chon lai"))
)

(setq chondd (car ddd))
(setq luubatdiem (getvar "osmode"))
  (setvar "osmode" 0)
(setq chieudaicuver (vlax-curve-getDistAtParam chondd (vlax-curve-getEndParam chondd)))
(setq diemdau (vlax-curve-getPointAtDist chondd 0))
(setvar "osmode"luubatdiem)
  (princ)
)
;;;;;;;;;;;;;;;;;
(Defun hoikieurai ()
  (setq krai (strcase (getstring "\nKieu rai theo: So luong/<Khoang cach>")))
(Cond
((= krai "S") (raisoluong))
((/= krai "S")(raikhoangcach))
) 
  (princ)
)
;;;;;;;;;;;;;;
(Defun raikhoangcach ()
   (setq chieudaidoan (GETDIST "\nKhoang cach doan chia: "))
   (setq sol (+ (/ chieudaicuver chieudaidoan) 1))
    (setq sl (fix sol))
    (setq sl (fix sl))
(thuchienrai)
  (princ)
)
;;;;;;;;;;;;;;
(Defun raisoluong ()
(setq slc (getreal "\nChia duong dan thanh may lan:"))
(setq chieudaidoan (/ chieudaicuver slc))
(setq sl (fix (+ 1 slc)))
(thuchienrai)
  (princ)
)
;;;;;;;;;;;;;;
(Defun thuchienrai (/ quaykhong)

  (setq quaykhong (strcase (getstring "\nCo quay doi tuong vuong goc voi duong dan khong: Khong/<Co>")))
(Cond
((= quaykhong "K") (setq copygiua copykoquay))
((/= quaykhong "K")(setq copygiua copyquay))
) 

(setq index -1)

  (repeat sl
(setq index (1+ index))
(setq d2 (* chieudaidoan index))
(setq luubatdiem (getvar "osmode"))
  (setvar "osmode" 0)
(setq p2 (vlax-curve-getPointAtDist chondd d2))
(setvar "osmode"luubatdiem)
(copygiua)
  )
  (princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;
(defun copycuoiquay()
(setq luubatdiem (getvar "osmode"))
  (setvar "osmode" 0)
(setq d5 (- chieudaicuver 0.001))
(setq p5 (vlax-curve-getPointAtDist chondd d5))
 (setq L 0)
 (setq M (sslength ss))
 (while (< L M)
   (setq DT (ssname ss L))
   (command ".copy" DT "" dc p2)
   (command ".rotate" "last" "" p2 p5)
   (command ".rotate" "last" "" p2 180)
   (setq L (1+ L))
)
(setvar "osmode"luubatdiem)
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;
(defun COPYQUAY(/ p3)
(setq luubatdiem (getvar "osmode"))
  (setvar "osmode" 0)
(setq d3 (+ (* chieudaidoan index) 0.001))
(setq p3 (vlax-curve-getPointAtDist chondd d3))
(setvar "osmode"luubatdiem)
(Cond
((= p3 nil) (copycuoiquay))
((/= p3 nil) 
 (setq L 0)
 (setq M (sslength ss))
(setq luubatdiem (getvar "osmode"))
  (setvar "osmode" 0)
 (while (< L M)
   (setq DT (ssname ss L))
   (command ".copy" DT "" dc p2)
   (command ".rotate" "last" "" p2 p3)
   (setq L (1+ L))
)
(setvar "osmode"luubatdiem)
)
) 


(princ)
)
P/S : sửa lần 2, bác Duy cho code vào thẻ code nhé mad.gif

Mình đã cho vào thẻ code nhưng sao nó vẩn dài thòng thế nhỉ. Mình đã xem mấy bài bên viết lisp theo yêu cầu nhấn nào trả lời để xem thì thấy cú pháp thẻ codecủa mình đúng nhưng sao không hiển thị được nhỉ!

 

a có thể sửa thêm code chia theo khoảng cách nhập trước VD 23,5; 25,9; 30.... đc ko


  • 0

#83 dangky2510

dangky2510

    biết vẽ circle

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

Đã gửi 15 October 2015 - 08:45 AM

Bạn có thể update lên là rải đổi tượng trên nhiều đường dẫn một lúc không?


  • 0

#84 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 15 October 2015 - 09:09 AM

Không.


  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#85 dangky2510

dangky2510

    biết vẽ circle

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

Đã gửi 15 October 2015 - 09:55 AM

Thank bạn! Mình đang muốn rải 2 cọc giải phóng mặt bằng ở hai đầu cọc tim, nếu rải thủ công thì lâu quá.


  • 0

#86 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 15 October 2015 - 10:39 AM

Đó là việc khác với lisp rải đối tượng lên đường dẩn. Chỉ cần yêu cầu rỏ ràng ngon lành thì sẽ có người viết thôi mà.


  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#87 dangky2510

dangky2510

    biết vẽ circle

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

Đã gửi 15 October 2015 - 10:54 AM

OK thank anh!


  • 0

#88 tuancc12

tuancc12

    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 October 2015 - 01:00 PM

Nhờ bác Duy và mọi người nâng cấp cho cái lisp rải đối tượng như sau: 

Chọn nhiều đối tượng rải 1 lúc (block) nhưng các đối tượng riêng lẻ trong nhóm đã chọn đều vuông góc với đường dẫn (ở đây đường dẫn là polyline).

Nếu đối tượng rải là nhiều block sắp xếp xen kẽ nhau thì dùng lisp rải đối tượng bình thường mất nhiều thời gian.

http://www.cadviet.c...080_cadviet.dwg


  • 0

#89 nguyenloc_eng

nguyenloc_eng

    Chưa sử dụng CAD

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

Đã gửi 11 September 2016 - 09:10 AM

Nhờ bác Duy giúp chỉnh sửa thêm:
- Đối tượng rải là block attribute, rải theo mọi phương, giá trị trong block sẽ tăng dần, vd: 1,2,3
Cám ơn bác


  • 0