Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] Lisp đổi đầu arrow của leader


  • Please log in to reply
10 replies to this topic

#1 proconeng86

proconeng86

    biết lệnh break

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

Đã gửi 14 July 2013 - 11:32 PM

Chào các bạn, mình là kĩ sư kết cấu. trong vẽ kết cấu mình sử dụng 3 loại leader có arrow là : dot, architectural tick, none. ngoài ra còn một số loại nữa là open 30, closed filled nhưng ít dùng hơn. mặc định khi tạo leader thì nó sẽ lấy arrow trong dim style nên leader có dạng architectural tick. khi mình muốn chuyển sang loại arrow khác lại phải chọn nó và chỉnh trong properties, việc này khá mất thời gian. các bạn giúp mình viết 1 lisp mà mình có thể chọn loại arrow của leader trên dòng lệnh được không

Cảm ơn các bạn rất nhiều

P.s: trước mình có post nhầm bài tương tự trong phần thắc mắc chung do chưa tìm hiểu kĩ yêu cầu lisp có riêng 1 phần. Mod del hộ bài kia nhé. thanks


  • 0

#2 proconeng86

proconeng86

    biết lệnh break

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

Đã gửi 16 July 2013 - 10:52 PM

Hic, đợi mãi mà không có bạn nào giúp được mình ah. Mình thấy trên diễn đàn rất nhiều cao thủ mà, hic


  • 0

#3 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 17 July 2013 - 06:50 AM

Lisp thay đổi Arrowhead của Leader và Dimension. Tưởng bạn đã quên ai ngờ vẫn nhớ.

;; Thay doi Arrowhead cua cac Leader va Dimension duoc chon.
;; Doan Van Ha - CadViet.com - ngay 16/7/2013
(vl-load-com)
(defun C:HA( / lst ss txt i ent L->Ptr #String:Replace)
 (defun L->Ptr(lst)
  (vl-string-trim "()" (vl-princ-to-string lst)))
 (defun #String:Replace(new old str / inc len)
  (setq len (strlen new) inc 0)
  (while (setq inc (vl-string-search old str inc))
   (setq str (vl-string-subst new old str inc) inc (+ inc len)))
  str)
 (setq lst
 '(("01.ClosedFilled" acArrowDefault)
   ("02.Dot" acArrowDot)
   ("03.DotSmall" acArrowDotSmall)
   ("04.DotBlank" acArrowDotBlank)
   ("05.OriginIndicator" acArrowOrigin)
   ("06.OriginIndicator2" acArrowOrigin2)
   ("07.Open" acArrowOpen)
   ("08.RightAangle" acArrowOpen90)
   ("09.Open30" acArrowOpen30)
   ("10.Closed" acArrowClosed)
   ("11.DotSmallBlank" acArrowSmall)
   ("12.None" acArrowNone)
   ("13.Oblique" acArrowOblique)
   ("14.BoxFilled" acArrowBoxFilled)
   ("15.Box" acArrowBoxBlank)
   ("16.ClosedBlank" acArrowClosedBlank)
   ("17.DatumTriangleFilled" acArrowDatumFilled)
   ("18.DatumTriangle" acArrowDatumBlank)
   ("19.Integral" acArrowIntegral)
   ("20.ArchitecturalTick" acArrowArchTick)))
 (setq lst (list (mapcar 'car lst) (mapcar 'cadr lst)))
 (if
  (and 
   (princ "\nChon cac Leader can thay doi Arrowhead...")
   (setq ss (ssget '((0 . "LEADER,DIMENSION"))))
   (not (initget (strcat (L->Ptr (car lst)) " _" (L->Ptr (cadr lst)))))
   (setq txt (getkword (strcat "\nNhap 1 tuy chon tu 01 den 20 [" (#String:Replace "/" " " (L->Ptr (car lst))) "]: "))))
  (repeat (setq i (sslength ss))
   (if (eq (cdr (assoc 0 (entget (setq ent (ssname ss (setq i (1- i))))))) "LEADER")
    (vla-put-ArrowheadType (vlax-ename->vla-object ent) (eval (read txt)))
(progn
     (vla-put-Arrowhead1Type (vlax-ename->vla-object ent) (eval (read txt)))
     (vla-put-Arrowhead2Type (vlax-ename->vla-object ent) (eval (read txt)))))))
 (princ))
 

  • 5

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


#4 langtumaulanh

langtumaulanh

    biết vẽ ellipse

  • Members
  • PipPip
  • 54 Bài viết
Điểm đánh giá: 19 (tàm tạm)

Đã gửi 17 July 2013 - 07:19 AM

Cái náy dùng thế nào bác nhỉ???


  • 0

#5 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 17 July 2013 - 07:23 AM

Cái náy dùng thế nào bác nhỉ???

Lisp này dùng để đổi đầu Arrow của Dim và Leader.

Cách dùng: Load lisp >> lệnh HA.


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


#6 proconeng86

proconeng86

    biết lệnh break

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

Đã gửi 17 July 2013 - 09:51 PM

Lisp thay đổi Arrowhead của Leader và Dimension. Tưởng bạn đã quên ai ngờ vẫn nhớ.

 

;; Thay doi Arrowhead cua cac Leader va Dimension duoc chon.
;; Doan Van Ha - CadViet.com - ngay 16/7/2013
(vl-load-com)
(defun C:HA( / lst ss txt i ent L->Ptr #String:Replace)
 (defun L->Ptr(lst)
  (vl-string-trim "()" (vl-princ-to-string lst)))
 (defun #String:Replace(new old str / inc len)
  (setq len (strlen new) inc 0)
  (while (setq inc (vl-string-search old str inc))
   (setq str (vl-string-subst new old str inc) inc (+ inc len)))
  str)
 (setq lst
 '(("01.ClosedFilled" acArrowDefault)
   ("02.Dot" acArrowDot)
   ("03.DotSmall" acArrowDotSmall)
   ("04.DotBlank" acArrowDotBlank)
   ("05.OriginIndicator" acArrowOrigin)
   ("06.OriginIndicator2" acArrowOrigin2)
   ("07.Open" acArrowOpen)
   ("08.RightAangle" acArrowOpen90)
   ("09.Open30" acArrowOpen30)
   ("10.Closed" acArrowClosed)
   ("11.DotSmallBlank" acArrowSmall)
   ("12.None" acArrowNone)
   ("13.Oblique" acArrowOblique)
   ("14.BoxFilled" acArrowBoxFilled)
   ("15.Box" acArrowBoxBlank)
   ("16.ClosedBlank" acArrowClosedBlank)
   ("17.DatumTriangleFilled" acArrowDatumFilled)
   ("18.DatumTriangle" acArrowDatumBlank)
   ("19.Integral" acArrowIntegral)
   ("20.ArchitecturalTick" acArrowArchTick)))
 (setq lst (list (mapcar 'car lst) (mapcar 'cadr lst)))
 (if
  (and 
   (princ "\nChon cac Leader can thay doi Arrowhead...")
   (setq ss (ssget '((0 . "LEADER,DIMENSION"))))
   (not (initget (strcat (L->Ptr (car lst)) " _" (L->Ptr (cadr lst)))))
   (setq txt (getkword (strcat "\nNhap 1 tuy chon tu 01 den 20 [" (#String:Replace "/" " " (L->Ptr (car lst))) "]: "))))
  (repeat (setq i (sslength ss))
   (if (eq (cdr (assoc 0 (entget (setq ent (ssname ss (setq i (1- i))))))) "LEADER")
    (vla-put-ArrowheadType (vlax-ename->vla-object ent) (eval (read txt)))
(progn
     (vla-put-Arrowhead1Type (vlax-ename->vla-object ent) (eval (read txt)))
     (vla-put-Arrowhead2Type (vlax-ename->vla-object ent) (eval (read txt)))))))
 (princ))
 

Cám ơn bạn Ha nhiều nhé. lisp rất trực quan, chọn leader rồi đưa ra bảng chọn hết các loại luôn, quá tuyệt vời.

cám ơn bạn nhiều, chúc bạn mạnh khỏe và thành công trong công việc


  • 0

#7 tuandoosan

tuandoosan

    biết vẽ ellipse

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

Đã gửi 01 November 2014 - 04:54 PM

lisp trên của bác rất hay. e cũng đang quan tâm. nhưng e gặp 1 vấn đề nhỏ là cty e dùng CAD LT và có cài thêm CADSTA Max. khi appload vào thì cad k nhận lệnh. vậy bác có thể khác phục lỗi này giúp e dk k ah? thanks bác  nhiều...


  • 0

#8 hoainam1

hoainam1

    biết vẽ arc

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

Đã gửi 01 November 2014 - 05:02 PM

"lisp trên của bác rất hay. e cũng đang quan tâm. nhưng e gặp 1 vấn đề nhỏ là cty e dùng CAD LT và có cài thêm CADSTA Max. khi appload vào thì cad k nhận lệnh. vậy bác có thể khác phục lỗi này giúp e dk k ah? thanks bác nhiều..." CAD LT không chạy phần LIST bạn àh
  • 1

#9 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 01 November 2014 - 05:19 PM

lisp trên của bác rất hay. e cũng đang quan tâm. nhưng e gặp 1 vấn đề nhỏ là cty e dùng CAD LT và có cài thêm CADSTA Max. khi appload vào thì cad k nhận lệnh. vậy bác có thể khác phục lỗi này giúp e dk k ah? thanks bác  nhiều...

Dùng Cad LT thì lisp khổ sở rồi, bởi Cad LT chỉ hiểu được 1 số hàm của lisp mà thôi.

Tôi không có Cad LT ở đây nên không biết thiếu hàm nào để sửa lisp.


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

minhtanx2

    biết lệnh stretch

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

Đã gửi 24 July 2015 - 07:22 PM

em dùng cad 2012 mà lisp cũng k nhận lệnh, k biết là làm sao vậy ah?


  • 0

Khi bạn tán tỉnh một cô gái đẹp, một giờ đồng hồ chẳng qua như một giây. Khi bạn ngồi trên một hòn than nóng bỏng, một giây như thể một giờ. Đó chính là tính tương đối. (Albert Einstein)


#11 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 24 July 2015 - 09:34 PM

Không nhận lệnh nghĩa là sao?


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