Đến nội dung


Hình ảnh

Nhờ Nâng Cấp Lisp Dải Leader Tại Giao Điểm Của Các Đoạn Thẳng.


  • Please log in to reply
4 replies to this topic

#1 Danh Cong

Danh Cong

    biết lệnh properties

  • Members
  • PipPipPipPip
  • 253 Bài viết
Điểm đánh giá: 41 (tàm tạm)

Đã gửi 27 June 2016 - 04:23 PM

Chào các anh chị ạ.

Em mới tập viết lisp, chỉ viết được cách dải Leader theo 1 đường thẳng, các leader dải theo 1 khoảng cách định sẵn thôi.

 Giờ em muốn nâng cấp nó - Hoặc cũng có thể phải viết 1 lisp mới hoàn toàn mà em thì chưa hiểu rõ lắm. 

 

Mục tiêu của em như sau.

-    Có 1 số đường thẳng như hình vẽ. Đường thẳng A-B giao cắt với các đường thẳng đó. 

-    EM muốn vẽ n đường Leader, với điểm cuối là A, còn điểm đầu là giao điểm của đường thẳng A-B với các đường thẳng còn lại

 

Mong các anh chị giúp đỡ. 124641_leader.png


  • 0

             ***  Vô lo - Vô nghĩ - Vô sầu hận  ***

***  Chẳng thương - Chẳng giận - Chẳng đau lòng  ***


#2 Danh Cong

Danh Cong

    biết lệnh properties

  • Members
  • PipPipPipPip
  • 253 Bài viết
Điểm đánh giá: 41 (tàm tạm)

Đã gửi 27 June 2016 - 04:43 PM

Lisp  này của em thì chỉ cố định được điểm cuối của Learder. Còn điểm đầu thì phải Pick thủ công, nếu phải vẽ nhiều Leader thì pick điểm mất nhiều thời gian quá.  Do vậy nếu xác định được giao điểm của đường thẳng A-B với các đường thẳng kia thì tốt quá http://www.cadviet.c.../124641_lee.txt


  • 0

             ***  Vô lo - Vô nghĩ - Vô sầu hận  ***

***  Chẳng thương - Chẳng giận - Chẳng đau lòng  ***


#3 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

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

Đã gửi 28 June 2016 - 03:03 PM

Cái này nên làm MLeader luôn để các Leader nó kết thành 1 đối tượng.

Lisp sửa lại của bạn:

(defun c:lee  (/ a b c cmd enl i ssl tmp)
 (setq cmd (getvar 'CMDECHO))
 (setvar 'CMDECHO 0)
 (command "undo" "be")
 (if (and (setq a (getpoint "\nChon diem Cuoi Leader"))
          (setq b (getpoint a "\nChon diem Dau ve Leader")))
  (progn
;;; (command "Leader" b a "" "" "n")
         (command "LINE" b a "")
         (setq tmp (entlast))
         (setq ssl (ssget "_F" (list a b) '((0 . "*LINE"))))
         (setq i -1)
         (while (setq enl (ssname ssl (setq i (1+ i))))
          (and (Setq c (car (acet-geom-intersectwith enl tmp 0))) (command "leader" c a "" "" "n")))
         (entdel tmp)))
 (command "undo" "end")
 (setvar 'CMDECHO cmd)
 (princ))

  • 1

#4 Danh Cong

Danh Cong

    biết lệnh properties

  • Members
  • PipPipPipPip
  • 253 Bài viết
Điểm đánh giá: 41 (tàm tạm)

Đã gửi 29 June 2016 - 08:20 AM

Em cám ơn ạ :)

Em tìm tòi học lisp mấy tuần,  chưa biết cách để xử lý cơ sở dữ liệu của đối tượng được chọn.

 

ANh có thể giải thích chút ít về cú pháp : (ssget "_F" (list a B) '((0 . "*LINE"))         và      (and (Setq c (car (acet-geom-intersectwith enl tmp 0)))

 

 

 

Cái này nên làm MLeader luôn để các Leader nó kết thành 1 đối tượng.

Lisp sửa lại của bạn:

(defun c:lee  (/ a b c cmd enl i ssl tmp)
 (setq cmd (getvar 'CMDECHO))
 (setvar 'CMDECHO 0)
 (command "undo" "be")
 (if (and (setq a (getpoint "\nChon diem Cuoi Leader"))
          (setq b (getpoint a "\nChon diem Dau ve Leader")))
  (progn
;;; (command "Leader" b a "" "" "n")
         (command "LINE" b a "")
         (setq tmp (entlast))
         (setq ssl (ssget "_F" (list a b) '((0 . "*LINE"))))
         (setq i -1)
         (while (setq enl (ssname ssl (setq i (1+ i))))
          (and (Setq c (car (acet-geom-intersectwith enl tmp 0))) (command "leader" c a "" "" "n")))
         (entdel tmp)))
 (command "undo" "end")
 (setvar 'CMDECHO cmd)
 (princ))

 


  • 0

             ***  Vô lo - Vô nghĩ - Vô sầu hận  ***

***  Chẳng thương - Chẳng giận - Chẳng đau lòng  ***


#5 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

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

Đã gửi 29 June 2016 - 10:14 AM

 Bạn tìm hiểu hàm:

- ssget về chọn và lọc đối tượng.

- acet-geom-intersectwith là hàm (của Exprres) tìm giao điểm của enl và tmp

Trên 4r có nhiều bài nói về các hàm đó rồi.


  • 0