Chuyển đến nội dung
Diễn đàn CADViet

hoquangvinh

Thành viên
  • Số lượng nội dung

    215
  • Đã tham gia

  • Lần ghé thăm cuối

  • Ngày trúng

    3

Bài đăng được đăng bởi hoquangvinh


  1. mình đã sử dụng qua một số lisp ( xóa đối tượng trong, ngoài đường bao khép kín  có trên diễn đàn nhứ erc.lsp của bạn thiep, ewb.lsp của bạn Gia Bach, xoa.lsp của bạn kangkung  ) 

    mình thấy các list đó chỉ mới xét đến yếu tố đối tượng dính or ko dính đường bao, chứ chưa xét đến tọa độ của đối tượng nằm trong hay ngoài đường bao.

    giờ mình muốn xóa các text có tọa độ nằm trong or nằm ngoài đường bao khép kin thì làm thế nào ạh?

    các bạn giúp mình vấn đề này với.

    bạn có lisp erc.lsp của bạn thiep, ewb.lsp của bạn Gia Bach thì cho mình xin với

    mình chỉ có lisp của bạn KangKung thôi còn 2 cái kia: cái thì link die, cái thì lỗi nhưng ko khắc phục được

    thanks


  2. em đã thử tất cả các cách mà các anh hướng dẫn mà vẫn k sử được text trong file xref

    có ai có cách nào không giúp e với

    mình ko làm theo cách của các bài phía trên nhưng vẫn thấy dùng bình thường na

    1. đầu tiên mình xref khung tên bình thường (không chưa đối tượng ATT nhé)

    2. lập đối tượng ATT các vị trí tương ứng ở khung tên xref

    3. block khung tên với đối tượng xref + ATT

    sau đó chi cần copy block đã tạo đến file nào cũng đc 1 block vừa có xref vừa có thuộc tính


  3. Tìm cách filer lọc chọn nguyên lấy các đối tượng text cần quan tâm. Rồi vào property (ctrl+1) tìm mục content paste cái d32a200 vào đó thì tất cả các text sẽ có cùng 1 nội dung mon muốn mà ko cần lisp. Thân!

    lisp này mình có dùng cho nhiều trường hợp nữa chứ ko phải chỉ thay 1 giá trị bằng giá trị khác (cái này tất nhiên cad cũng làm được nhưng lisp nó tiện hơn thôi)

    vì thế nên mình cần đánh dấu các giá trị text thay đổi


  4. dùng cách Find and Replace không khả thi, và co bất cập, vì như vậy chỉ thay thế tất cả các ký tự "10" thành "32a150"

    ===> chưa giải quyết được vấn đề.

     

    Nếu bản vẽ của bạn chỉ có 1 loại thép 10-32a150, bạn có thể ẩn hết các đương kích thước đi, rồi copy text theo lệnh TC

     

    (defun copy-add-text-content (mode / err oer sta res sel mtx dim chc chg
    hig sor rdw dec temp
    sou data)
    ;
    (defun err(s)
    (if (and (/= s "Function cancelled")(/= s "quit / exit abort"))
    (princ (strcat "\n--->> Error: " s))
    )
    (res)
    )
    ;
    (defun res()
    (if hig (setvar "HighLight" hig))
    (if sor (setvar "Sortents" sor))
    (if pst (setvar "Pickstyle" pst))
    (if rdw (chc 0))
    (command "_.Undo" "_End")
    (setq *error* oer)
    (setvar "Cmdecho" 1)
    (princ)
    )
    ;
    (defun sta()
    (setq oer *error*
    *error* err
    hig (getvar "HighLight")
    sor (getvar "Sortents")
    pst (getvar "Pickstyle")
    dec (getvar "Dimdec")
    )
    (setvar "Cmdecho" 0)
    (command "_.Undo" "_Group")
    (setvar "HighLight" 1)
    (setvar "Sortents" 1)
    (setvar "Pickstyle" 0)
    (graphscr)
    )
    ;
    (defun sel(/ loop lis typ intro)
    (if (null del-mode)(setq del-mode "0"))
    (if (null mat-mode)(setq mat-mode "0"))
    (setq loop T
    lis '("TEXT" "MTEXT" "DIMENSION" "ARCALIGNEDTEXT")
    )
    (if (= mode 0)
    (setq intro "\nSelect copy source text ")
    (setq intro "\nSelect additon source text ")
    )
    (while loop
    (initget "Exit Delete Match MD DM")
    ;(setq del T);;;
    (setq sou (entsel (strcat intro "[Delete source("del-mode")/Match properties("mat-mode")]: ")))
    (cond
    ((= sou "Exit")(exit))
    ((null sou)(exit))
    ((= sou "Delete")
    (if (= del-mode "0")
    (setq del-mode "1")
    (setq del-mode "0")
    )
    )
    ((= sou "Match")
    (if (= mat-mode "0")
    (setq mat-mode "1")
    (setq mat-mode "0")
    )
    )
    ((or (= sou "MD")(= sou "DM"))
    (progn
    (if (= del-mode "0")
    (setq del-mode "1")
    (setq del-mode "0")
    )
    (if (= mat-mode "0")
    (setq mat-mode "1")
    (setq mat-mode "0")
    )
    )
    )
    ((progn
    (setq data (entget (car sou))
    typ (cdr (assoc 0 data))
    )
    (if (not (member typ lis))
    (princ "Invalid selection.")
    (progn
    (setq temp (assoc 1 data)
    loop nil
    )
    (cond
    ((= typ "MTEXT")(mtx))
    ((= typ "DIMENSION")(dim))
    )
    )
    ); if end
    ))
    ); cond end
    )
    (chc 1)
    (setq rdw T)
    )
    ;
    (defun mtx(/ con test)
    (setq con (cdr temp)
    test (substr con 1 1)
    )
    (if (= test "\\")(setq temp (cons 1 (substr con 5))))
    )
    ;
    (defun dim(/ con)
    (setq con (cdr temp))
    (if (or (= con "")(= con "<>"))
    (setq temp (cons 1 (rtos (cdr (assoc 42 data)) 2 dec)))
    )
    )
    ;
    (defun chc(mode / col)
    (cond
    ((and (= del-mode "1") (= mat-mode "0"))(setq col "230"))
    ((and (= del-mode "0") (= mat-mode "1"))(setq col "110"))
    ((and (= del-mode "1") (= mat-mode "1"))(setq col "30"))
    ((setq col "140"))
    )
    (if (= mode 0)
    (progn
    (command "_.Chprop" sou "" "_Color" "BYLAYER" "")
    (redraw (car sou) 4)
    )
    (progn
    (command "_.Chprop" sou "" "_Color" col "")
    (redraw (car sou) 3)
    )
    )
    )
    ;
    (defun chg(/ ss inc data-)
    (if (= mode 0)
    (princ "\nSelect destiantion texts to change: ")
    (princ "\nSelect destiantion texts to add: ")
    )
    (setq ss (ssget '((-4 . "<OR")
    (0 . "TEXT")(0 . "MTEXT")(0 . "DIMENSION")(0 . "ARCALIGNEDTEXT")
    (-4 . "OR>")
    )))
    (if (null ss)(exit))
    (setq inc 0)
    (repeat (sslength ss)
    (setq data- (entget (ssname ss inc))
    inc (1+ inc))
    (if (= mode 1)
    (setq temp (cons 1 (strcat (cdr (assoc 1 data-)) "x" (cdr temp))))
    )
    (entmod (subst temp (assoc 1 data-) data-))
    )
    (if (= mat-mode "1")
    (progn
    (if rdw (chc 0))
    (command "_.MatchProp" sou ss "")
    )
    )
    (if (= del-mode "1")
    (progn
    (entdel (car sou))
    (setq rdw nil)
    )
    )
    )
    ;
    (sta)
    (sel)
    (chg)
    (res)
    )
    
    (defun c:TC()(copy-add-text-content 0))
    (defun c:TD()(copy-add-text-content 1))
    (princ)

    lisp này dùng tốt rồi nhưng nếu muốn đổi màu các đối tuợng đã thay đổi giá trị thì làm sao nhỉ

    nhờ các bạn giúp đỡ với


  5. http://www.cadviet.com/forum/topic/18049-edit-nhanh-1-nhom-text-trong-cad/?do=findComment&comment=90765

    bạn vào đường link đó, có thứ bạn cần. lisp đó mình cũng đang dùng, rất tiện và hay

    he hôm trước có vào link rồi nhưng chưa xem cái lisp cuối bài

    giờ mới check lại thì kết quả cũng đúng với yêu cầu của mình nhưng cũng thiếu phần đổi màu

    Ps: cũng đã vote cho bạn nhé


  6. Mình đã viết 1 cái rồi nhưng chưa nhớ link, post lại cho bạn. Có thể dùng cho cả Anon Block

    ;| Change Anonymous Block to normal with new Name@ Ketxu 27 - 9 - 2011|;(defun c:nb( / blkObj blkName blkNew_Name fn pt)(vl-load-com)(defun ST:SS->List-Vla (ss / n e l)  (setq n (sslength ss))  (while (setq e (ssname ss (setq n (1- n))))(setq l (cons (vlax-ename->vla-object e) l))  ))(defun change_block(old new)(foreach blkObj (setq ss (ST:SS->List-Vla (ssget (list (cons 0 "INSERT")(cons 2 old)))))(vla-put-name blkObj new);;change the name(vla-update blkObj)))(grtext -1 "Free Lisp From Cadviet @Ketxu")(setvar "cmdecho" 0)(setqblkObj (vlax-ename->vla-object (car(entsel "\nBlock Source :")))blkName (vlax-get-property blkObj	(if (vlax-property-available-p blkObj 'EffectiveName) 'EffectiveName 'Name)  ) blkNew_Name (getstring "\n New Name :")  fn (strcat (getenv "TEMP") "\\" blkNew_Name ".dwg"))(command ".-wblock" fn "_Y" blkName "") (command "._insert" (strcat blkNew_Name "=" fn) nil )(if (wcmatch "`*" (substr blkName 1 1))(setq blkName (strcat "`*" (substr blkName 2))))(change_block blkName blkNew_Name)(vl-file-delete  fn))

    mình có dùng cái này rồi

    đối với block thường thì rất ok nhưng đối với block thuộc tính thì ko dùng được

    mong bác ketxu xem xét chỉnh sửa giúp với


  7. Các anh cho em hỏi cách loại bỏ  nét thừa 2 đầu hình vẽ như thế nào ạ.

    Em muốn bắt đầu và kết thúc là ô vuông ạ.

    Chân thành cảm ơn các anh :)

    -------------------------------------------------------------------------------------------152790_cad.jpg

    cái này mình nghĩ là khó rồi

    cái line type ấy nó có các đoạn giống nhau như tập hợp nhiều block vậy

    muốn cả đầu và cuối đều là ô vuông thì chiều dài nó phải bằng n x block + ô vuông

    mình trước hay dùng theo cách kéo dài hoặc rút ngắn 1 tý để 2 đầu như nhau

×