Đến nội dung


Hình ảnh

Trim Leader?


  • Please log in to reply
21 replies to this topic

#1 vanhoatnguyen

vanhoatnguyen

    biết zoom

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

Đã gửi 20 February 2012 - 05:15 PM

Chào các bác!
Em là thành viên mới, còn mù mờ lắm. Em có một vấn đề cần giúp đỡ như sau:
Em hay vẽ Cốt thép, tình hình là khi em rải thép xong, dùng lệnh Quick leader để ký hiệu tên thanh thép. Để cho nhanh thì em vẽ một leader ngắn sau đó Array theo bước thép, Nhưng vấn đề là ở chỗ lúc đó thì các chân leader này không ở cùng một vị trí, khi đó nếu mình muốn move đi chẳng hạn thì việc chọn tất cả các leader này sẽ khó, Vậy em xin nhờ các cao thủ viết giúp một lisp làm được vấn để đó, cụ thể như sau:
Khi em vẽ thì vẫn vẽ các leader "ngắn" sau đó dùng lisp để "Trim" rồi quét chọn tất cả các leader đó rồi chọn một điểm làm chân mới của tất cả các Leader đó. Lisp này có tác dụng với cả các leader theo phương xiên thì càng tốt.

Em gửi kèm file, các bác xem giúp em nhé!
Thanks các bác!
http://www.cadviet.c...3883_leader.dwg
  • 0

#2 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 20 February 2012 - 10:46 PM

Quick code :

(defun c:ldp (/ LM:mAssoc p lst ss)
;Free lisp from Cadviet @Ketxu
(defun LM:mAssoc ( key lst / pair )
(if (setq pair (assoc key lst))
(cons (cdr pair) (LM:mAssoc key (cdr (member pair lst))))
)
)
(and (setq ss (ssget '((0 . "*LEADER"))))
(setq p (getpoint "\nDiem dat chung :"))
(foreach ld (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
(entmod (subst (cons 10 p) (cons 10 (last (LM:mAssoc 10 (setq lst (entget ld))))) lst))
)
))

  • 2

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 vanhoatnguyen

vanhoatnguyen

    biết zoom

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

Đã gửi 21 February 2012 - 09:03 AM

Tuyệt quá. Em cảm ơn anh Ketxu nhiều nhé. Đúng như ý của em.
Cảm ơn anh Ketxu lần nữa nhé!
Còn một vấn đề nữa em mới gặp phải, Anh có thể viết giúp em một đoạn Lisp ngắn chuyển layer bất kỳ thành Layer Depoint của Cad được không ạ!
Em cảm ơn anh nhiều!
  • 0

#4 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 21 February 2012 - 09:18 AM

Tuyệt quá. Em cảm ơn anh Ketxu nhiều nhé. Đúng như ý của em.
Cảm ơn anh Ketxu lần nữa nhé!
Còn một vấn đề nữa em mới gặp phải, Anh có thể viết giúp em một đoạn Lisp ngắn chuyển layer bất kỳ thành Layer Depoint của Cad được không ạ!
Em cảm ơn anh nhiều!

Hôm qua mình bùn ngủ, gà gật code, hnay mới để ý là bài bạn viết k theo quy định. Bạn vui lòng đọc quy định yêu cầu lisp bên dưới chữ ký của mình rồi bàn tiếp nhé :)
  • 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


#5 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 21 February 2012 - 09:19 AM

Tuyệt quá. Em cảm ơn anh Ketxu nhiều nhé. Đúng như ý của em.
Cảm ơn anh Ketxu lần nữa nhé!
Còn một vấn đề nữa em mới gặp phải, Anh có thể viết giúp em một đoạn Lisp ngắn chuyển layer bất kỳ thành Layer Depoint của Cad được không ạ!
Em cảm ơn anh nhiều!

Về lisp chuyển layer thì trên cadviet có rất nhiều. Đơn giản như bạn thì dùng cái này xem:

(defun C:TL ( / ss)
(princ "\nChon cac doi tuong can thay doi Layer ve Defpoints: ")
(setq ss (ssget))
(if (not (tblsearch "layer" "Defpoints"))
(command ".layer" "m" "Defpoints" ""))
(command ".chprop" ss "" "la" "Defpoints" "")
(princ))

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

ketxu

    Copier - Paster - Editor

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

Đã gửi 21 February 2012 - 09:27 AM

Layer Defpoint là mặc định có trong bản vẽ bác ạ ^^
  • 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


#7 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 21 February 2012 - 09:33 AM

Layer Defpoint là mặc định có trong bản vẽ bác ạ ^^

Chưa dùng lệnh Dim một lần thì chưa có Defpoints Ket ạ!
  • 3

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

ketxu

    Copier - Paster - Editor

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

Đã gửi 21 February 2012 - 09:55 AM

Ồ, quả có vậy thật. Tại ketxu dùng bản vẽ nào cũng có dim nên tưởng nó có từ sơ khai ^^ Tks bác ĐVH ^^
  • 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


#9 vanhoatnguyen

vanhoatnguyen

    biết zoom

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

Đã gửi 21 February 2012 - 12:21 PM

Cảm ơn các bác nhé. Tại em cũng có lisp chuyển sang các Layer khác nhau rồi nhưng không chuyển sang Layer mặc định của Cad là Depoint được nên nhờ các bác giúp đỡ. Cũng vì em để Layer của khung Mview bên layout là layer depoint nên nảy sinh ra vấn đề đó.
Cảm ơn các bác đã nhiệt tình giúp đỡ nhé!
  • 0

#10 vanhoatnguyen

vanhoatnguyen

    biết zoom

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

Đã gửi 27 February 2012 - 11:54 AM

Chào các bác!
Em định nhờ các bác viết hộ 2 đoạn lisp như sau:
1. Đoạn lisp click chọn một đường Dim và chọn kiểu Dimension style của đường dim đó làm kiểu Dim hiện hành.
2.Đoạn lisp cut chân những đường dim theo phương xiên?
Em định lập một Topic riêng nhưng thấy vấn đề này hơi nhỏ với lại lúc em post lên nó cứ trục trặc nên em post luôn ở đây mong các đại ca giúp đỡ!
Em cảm ơn trước nhé!
  • 0

#11 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 27 February 2012 - 12:32 PM

Chào các bác!
Em định nhờ các bác viết hộ 2 đoạn lisp như sau:
1. Đoạn lisp click chọn một đường Dim và chọn kiểu Dimension style của đường dim đó làm kiểu Dim hiện hành.
2.Đoạn lisp cut chân những đường dim theo phương xiên?
Em định lập một Topic riêng nhưng thấy vấn đề này hơi nhỏ với lại lúc em post lên nó cứ trục trặc nên em post luôn ở đây mong các đại ca giúp đỡ!
Em cảm ơn trước nhé!

Câu 1
P/S (20h40-27/02/2012): đã sửa các lỗi bị nhầm lẫn.

;Doan Van Ha - CADViet.com - Ngay 27-02-2012
;Muc dich: Chon Dim lam Dim hien hanh.
;Duoc bien soan dua theo lisp cua Terry Miller. Thanks very much!
(defun C:DHH (/ blk Blklst blk1 lstblk z sty val var len lst1 ent lst type z osm hgt hei)
(setq osm (getvar "osmode")) (setvar "cmdecho" 0) (setvar "osmode" 0)
(setq ent (car (entsel "Chon Dim lam Dim hien hanh: ")))
(if ent (setq lst (entget ent (list "*")) type (cdr (assoc 0 lst)) lst1 (last lst)))
(if (= type "DIMENSION")
(progn
(setq blk1 (cdr (assoc -2 (tblsearch "BLOCK" (cdr (assoc 2 lst))))))
(while (setq blk1 (entnext blk1))
(setq Blklst (entget blk1))
(if (= (cdr (assoc 0 Blklst)) "MTEXT")
(setq hei (cdr (assoc 40 Blklst)))))
(command ".DIMSTYLE" "R" (cdr (assoc 3 lst)))
(setq sty (tblsearch "STYLE" (getvar "DIMTXSTY")))
(command ".TEXTSIZE" hei)
(if (/= (cdr (assoc 40 (tblsearch "STYLE" (cdr (assoc 3 lst))))) 0)
(command ".STYLE" (cdr (assoc 3 lst)) "" hei "" "" "" "" ""))
(command ".LAYER" "S" (cdr (assoc 8 lst)) "")
(if (= (car lst1) -3)
(progn
(setq lst1 (nth 1 lst1) len (/ (length lst1) 2) z 1)
(repeat len
(if (= (type (nth z lst1)) 'LIST)
(if (= (car (nth z lst1)) 1070)
(if (or (= (car (nth (1+ z) lst1)) 1040) (= (car (nth (1+ z) lst1)) 1070))
(progn
(setq var (cdr (nth z lst1)) val (cdr (nth (1+ z) lst1)))
(cond ((= var 3) (setvar "DIMPOST" val))
((= var 4) (setvar "DIMAPOST"val))
((= var 5) (setvar "DIMBLK" val))
((= var 6) (setvar "DIMBLK1" val))
((= var 7) (setvar "DIMBLK2" val))
((= var 40) (setvar "DIMSCALE"val))
((= var 41) (setvar "DIMASZ" val))
((= var 42) (setvar "DIMEXO" val))
((= var 43) (setvar "DIMDLI" val))
((= var 44) (setvar "DIMEXE" val))
((= var 45) (setvar "DIMRND" val))
((= var 46) (setvar "DIMDLE" val))
((= var 47) (setvar "DIMTP" val))
((= var 48) (setvar "DIMTM" val))
((= var 71) (setvar "DIMTOL" val))
((= var 72) (setvar "DIMLIM" val))
((= var 73) (setvar "DIMTIH" val))
((= var 74) (setvar "DIMTOH" val))
((= var 77) (setvar "DIMTAD" val))
((= var 78) (setvar "DIMZIN" val))
((= var 140) (setvar "DIMTXT" val))
((= var 141) (setvar "DIMCEN" val))
((= var 142) (setvar "DIMTSZ" val))
((= var 143) (setvar "DIMALTF" val))
((= var 144) (setvar "DIMLFAC" val))
((= var 145) (setvar "DIMTVP" val))
((= var 146) (setvar "DIMTFAC" val))
((= var 147) (setvar "DIMGAP" val))
((= var 170) (setvar "DIMALT" val))
((= var 171) (setvar "DIMALTD" val))
((= var 172) (setvar "DIMTOFL" val))
((= var 173) (setvar "DIMSAH" val))
((= var 174) (setvar "DIMTIX" val))
((= var 175) (setvar "DIMSOXD" val))
((= var 176) (setvar "DIMDLRD" val))
((= var 177) (setvar "DIMCLRE" val))
((= var 178) (setvar "DIMCLRT" val))
((= var 270) (setvar "DIMUNIT" val))
((= var 271) (setvar "DIMDEC" val))
((= var 272) (setvar "DIMTDEC" val))
((= var 273) (setvar "DIMALTU" val))
((= var 274) (setvar "DIMALTTD"val))
((= var 275) (setvar "DIMAUNIT"val))
((= var 280) (setvar "DIMJUST" val))
((= var 281) (setvar "DIMSD1" val))
((= var 282) (setvar "DIMSD2" val))
((= var 283) (setvar "DIMTOLJ" val))
((= var 284) (setvar "DIMTZIN" val))
((= var 285) (setvar "DIMALTZ" val))
((= var 286) (setvar "DIMALTTZ"val))
((= var 287) (setvar "DIMFIT" val))
((= var 288) (setvar "DIMUPT" val)))))))
(setq z (+ z 2)))))
(setq lstblk (tblsearch "BLOCK" (cdr (assoc 2 lst))))
(setq blk (cdr (assoc -2 lstblk)))
(while (setq blk (entnext blk))
(if blk
(progn
(setq lstblk (entget blk))
(if (= (cdr (assoc 0 lstblk)) "MTEXT")
(setq hgt (cdr (assoc 40 lstblk)))))))
(if (= hgt 0)
(progn
(setq hgt (/ (getvar "dimscale") hgt))
(setvar "dimtxt" hgt)))))
(setvar "osmode" osm)
(princ))
Câu 2: chưa rõ câu hỏ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.


#12 lp_hai

lp_hai

    biết lệnh measure

  • Members
  • PipPipPipPipPipPip
  • 456 Bài viết
Điểm đánh giá: 202 (khá)

Đã gửi 27 February 2012 - 03:47 PM

Câu 2: chưa rõ câu hỏi

Lúc trước lâu lắm rồi, lúc em mới làm quen với CAD thì có lisp cutdim sau khi chọn các Dim xong thì phải chọn 2 điểm để tạo ra một đường giới hạn cắt các chân dim. Sau này hình như ít dùng nên người ta chế lại thành chỉ chọn có một điểm chon nó nhanh.
vì vậy cái "đường giới hạn" cũng mặc định theo 2 phương: song song với X hoặc Y (cái này tùy vào Dim). Do vậy các lisp này không cut được các chân Dim theo một đường xéo xéo.
Ý bác kia chắc là vậy!
  • 0
Hình đã gửi

#13 vanhoatnguyen

vanhoatnguyen

    biết zoom

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

Đã gửi 27 February 2012 - 04:54 PM

Cảm ơn bác Ha nhưng sao em down lisp HA về lại không dùng được nhỉ. Ý em là em sẽ click chọn một đường dim đã có, rồi gõ lệnh (như lisp bác viết là HA chẳng hạn) thì kiểu dim của đường dim đó (Ví dụ dim hiện hành của em đang là 1/30, em click chọn một đường dim của tỷ lệ 1/50 đã có ở trong bản vẽ nhưng không phải kiểu hiện hành rồi gõ lệnh hoặc ngược lại, gõ lệnh trước rồi chọn đường dim sau) thì kiểu 1/50 sẽ là kiểu dim hiện hành. Bác kiểm tra giúp em với nhé.nếu tiện bác sửa giúp em luôn dòng lệnh là "DHH" thay vì "HA" với!
Còn vấn đề thứ hai thì ý của em hỏi là:
Ví dụ mình có một đường line xiên, đo dim DA thì mình có lisp cắt chân cái dim đo theo kiểu DA được không ấy mà.
Bác xem trong file đính kèm này nhé
Một lần nữa cảm ơn các bác nhé!

mạng của em chập chờn quá nên không upload được, không biết em nói thế đã rõ chưa nhỉ!
  • 0

#14 TranQuocCuong

TranQuocCuong

    Chưa sử dụng CAD

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

Đã gửi 27 February 2012 - 05:26 PM

Chào các bác, em cũng đã thử dùng lisp "dhh" của bác Hà viết nhưng mà không được, cad nó báo là "Unknown command".
Cái lisp này chạy được thì rất hay, em cũng đang cần, mong bác Hà xem lại chút nhé.
Em xin cảm ơn các bác trước
  • 0

#15 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 27 February 2012 - 08:44 PM

Đã sửa các lỗi do nhầm lẫn. Link cũ.
  • 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.


#16 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 27 February 2012 - 09:35 PM

K rõ bác ĐVH viết lisp với mục đích chi mà nó dài quá vậy ạ ?

@OP : các lisp cắt dim trên diễn đàn hoàn toàn cắt được đường dim DA
  • 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


#17 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 27 February 2012 - 09:41 PM

K rõ bác ĐVH viết lisp với mục đích chi mà nó dài quá vậy ạ ?

@OP : các lisp cắt dim trên diễn đàn hoàn toàn cắt được đường dim DA

Có cách gì lấy 1 dim trên bản vẽ làm dim hiện hành không? Còn cái này 99% và 1% mà.
  • 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.


#18 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 27 February 2012 - 10:00 PM

Theo ý bạn OP mô tả thì nó tầm tầm như thế này :

(defun c:test ()(command "dimstyle" "r" (cdr (assoc 3 (entget (ssname (ssget ":S" (list (cons 0 "DIMENSION"))) 0))))))

  • 1

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


#19 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 27 February 2012 - 10:21 PM

Theo ý bạn OP mô tả thì nó tầm tầm như thế này :


(defun c:test ()(command "dimstyle" "r" (cdr (assoc 3 (entget (ssname (ssget ":S" (list (cons 0 "DIMENSION"))) 0))))))

Tôi bị lạc lối rồi! Lúc đầu setvar dimstyle nhưng không được nên cứ mải theo con đường set, thành ra quẩn. Thank Ket nhiều.
  • 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.


#20 vanhoatnguyen

vanhoatnguyen

    biết zoom

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

Đã gửi 28 February 2012 - 10:06 AM

Em làm được rồi. Cảm ơn các bác nhiều nhé!
  • 0