_

Usuwanie kreskowania z rysunku z wiersza poleceń

Forum poświęcone flagowemu produktowi oraz aplikacjom pochodnym Autodesku. To jedyne forum mające w tytule nazwę programu, a to ze względu na jego olbrzymią popularność w Polsce. Można tutaj umieszczać również posty z ogólnie pojętej tematyki "Kreślarskie 2D".

Usuwanie kreskowania z rysunku z wiersza poleceń

Postprzez 88marcin » cze 07, 2017 15:21

Witam,

jaka z rysunku usunąć kreskowanie o zadanym wzorze?

Wiem że można to zrobić przez SWYBIERZ.

Jak to zrobić żeby to wykonanć w lisp lub z wiersza poleceń?

Czy da się wyrzucić wsadowo ze wszystkich bloków w rysunku kreskowanie o zadanym wzorze?
88marcin
 
Posty: 84
Dołączył(a): mar 22, 2016 12:08

Re: Usuwanie kreskowania z rysunku z wiersza poleceń

Postprzez ziele_o2k » cze 07, 2017 15:57

88marcin napisał(a):Witam,

jaka z rysunku usunąć kreskowanie o zadanym wzorze?

Wiem że można to zrobić przez SWYBIERZ.


Poczytaj jeszcze o filtrach. Coś na ten temat tutaj:
https://kojacek.wordpress.com/2016/11/27/nazwane-filtry-wyboru/
88marcin napisał(a):Jak to zrobić żeby to wykonanć w lisp lub z wiersza poleceń?


Trzeba lispa napisać :)
Kod: Zaznacz cały
(defun c:Test1 (/ ss)
  (if (setq ss (ssget "_X" '((0 . "HATCH") (2 . "TWOJA_NAZWA_KRESKOWANIA"))))
    (repeat (setq in (sslength ss))
      (entdel (ssname ss (setq in (1- in) )))
    )
  )
)


88marcin napisał(a):Czy da się wyrzucić wsadowo ze wszystkich bloków w rysunku kreskowanie o zadanym wzorze?


Tutaj już koniecznie lispem, przykładowo:
Kod: Zaznacz cały
(defun c:Test2 (/ b o)
  ;;--- Tharwat 26.June.2013 ---;; 
  ;;--- modifications ziele_o2k 07.June.2017 ---;;
  (or doc
      (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
  )
  (vlax-for b
              (vla-get-blocks
                doc
              )
    (if
      (and
        (eq :vlax-false (vla-get-isLayout b))
        (eq :vlax-false (vla-get-isXref b))
      )
       (vlax-for o b
         (if (and (eq "AcDbHatch" (vla-get-objectname o)) (eq "TWOJA_NAZWA_KRESKOWANIA" (vla-get-PatternName o)))
           (vl-catch-all-apply 'vla-delete (list o))
         )
       )
    )
  )
  (vla-regen doc acAllViewports)
  (princ)
)
Ziele
Avatar użytkownika
ziele_o2k
 
Posty: 735
Dołączył(a): mar 18, 2014 11:33
Lokalizacja: Poznań

Re: Usuwanie kreskowania z rysunku z wiersza poleceń

Postprzez 88marcin » cze 08, 2017 14:23

Super :wink:
Działa znakomicie.
88marcin
 
Posty: 84
Dołączył(a): mar 22, 2016 12:08

Re: Usuwanie kreskowania z rysunku z wiersza poleceń

Postprzez 88marcin » lis 28, 2018 15:29

Mam rysunki od architekta, który ma ściany utworzone z kreskowaniami z "przykryciami" (Wipeout).
Prośba o zmodyfikowanie, tak żeby je pousuwać z bloków.
88marcin
 
Posty: 84
Dołączył(a): mar 22, 2016 12:08

Re: Usuwanie kreskowania z rysunku z wiersza poleceń

Postprzez akor » lis 28, 2018 21:04

A ten architekt pracuje prawdopodobnie w Archicadzie i stąd problem.
Kiedyś koleżanka prosiła mnie o wyczyszczenie takich rysunków i o ile pamiętam to pomogło:
delete Block Wipeouts.lsp
(720 Bajtów) Pobrane 17 razy

akor
akor
 
Posty: 561
Dołączył(a): cze 25, 2010 21:17

Re: Usuwanie kreskowania z rysunku z wiersza poleceń

Postprzez ziele_o2k » lis 29, 2018 09:43

88marcin napisał(a):Mam rysunki od architekta, który ma ściany utworzone z kreskowaniami z "przykryciami" (Wipeout).
Prośba o zmodyfikowanie, tak żeby je pousuwać z bloków.

Żeby trochę temat zautomatyzować, napisałem kawałek lispa, który z wszystkich plików dwg we wskazanym folderze wywala wszystkie "przykryje" :)
Wymagany pełny AutoCAD.
Funkcja oparta na ObjectDBX Wrapper od Lee Maca
Kod: Zaznacz cały
(defun c:deleteWipeouts nil
    (LM:ODBX
        (function
            (lambda ( doc / r LayersToRestore )
                (vlax-for #lay (vla-get-Layers doc)
                    (if (= (vla-get-freeze #lay ):vlax-true)
                        (progn
                            (setq r (cons "Freeze" r))
                            (vla-put-Freeze #lay :vlax-false)
                        )
                    )
                    (if (= (vla-get-Lock #lay ) :vlax-true)
                        (progn
                            (setq r (cons "Lock" r))
                            (vla-put-Freeze #lay :vlax-false)
                        )
                    )
                    (if (= (vla-get-LayerOn #lay ) :vlax-false)
                        (progn
                            (setq r (cons "LayerOn" r))
                            (vla-put-Freeze #lay :vlax-true)
                        )
                    )
                    (if r
                        (setq
                            r (cons #lay r)
                            LayersToRestore (cons r LayersToRestore)
                            r nil
                        )
                    )
                )
                (vlax-for #blk (vla-get-blocks doc)
                    (vlax-for #obj #blk
                        (if (= "AcDbWipeout" (vlax-get #obj 'ObjectName))
                            (vl-catch-all-error-p
                                (vl-catch-all-apply 'vla-delete (list #obj))
                            )
                        )
                    )
                )
                (vlax-for #obj (vla-get-modelspace doc)
                    (if (= "AcDbWipeout" (vlax-get #obj 'ObjectName))
                        (vl-catch-all-error-p
                            (vl-catch-all-apply 'vla-delete (list #obj))
                        )
                    )
                )
                (if LayersToRestore
                    (foreach #lay LayersToRestore
                        (foreach #prp (cdr #lay)
                            (if (= #prp "LayerOn")
                                (vlax-put-property (car #lay) #prp :vlax-false)
                                (vlax-put-property (car #lay) #prp :vlax-true)
                            )
                        )
                    )
                )
            )
        )
        nil t
    )
    (princ)
)
   
;;-----------------------=={ ObjectDBX Wrapper }==----------------------;;
;;                                                                      ;;
;;  Evaluates a supplied function on all drawings in a given list or    ;;
;;  selected directory.                                                 ;;
;;----------------------------------------------------------------------;;
;;  Author:  Lee Mac, Copyright © 2013  -  www.lee-mac.com              ;;
;;----------------------------------------------------------------------;;
;;  Arguments:                                                          ;;
;;                                                                      ;;
;;  fun [SYM]                                                           ;;
;;  ---------------------------------                                   ;;
;;  A function requiring a single argument (the VLA Document object),   ;;
;;  and following the 'rules' of ObjectDBX:                             ;;
;;                                                                      ;;
;;  - No SelectionSets               (ssget, ssname, ssdel, etc)        ;;
;;  - No Command Calls               (command "_.line" ... etc)         ;;
;;  - No ent* methods                (entget, entmod, entupd, etc)      ;;
;;  - No Access to System Variables  (setvar, getvar, setvariable, etc) ;;
;;                                                                      ;;
;;  lst [LIST] [Optional]                                               ;;
;;  ---------------------------------                                   ;;
;;  List of DWG Filenames; if nil, BrowseForFolder Dialog is displayed. ;;
;;                                                                      ;;
;;  sav [SYM]                                                           ;;
;;  ---------------------------------                                   ;;
;;  Boolean flag determining whether drawings should be saved following ;;
;;  function evaluation (T=saved, nil=not saved).                       ;;
;;----------------------------------------------------------------------;;
;;  Returns:                                                            ;;
;;                                                                      ;;
;;  List of:                                                            ;;
;;  (                                                                   ;;
;;      (<Drawing Filename> . <Function Result>)                        ;;
;;      (<Drawing Filename> . <Function Result>)                        ;;
;;      ...                                                             ;;
;;      (<Drawing Filename> . <Function Result>)                        ;;
;;  )                                                                   ;;
;;                                                                      ;;
;;  Where:                                                              ;;
;;  <Drawing Filename>                                                  ;;
;;  is the filename of drawing that has been processed.                 ;;
;;                                                                      ;;
;;  <Function Result>                                                   ;;
;;  is the result of evaluating the supplied function on the Document   ;;
;;  Object representing the associated drawing filename.                ;;
;;                                                                      ;;
;;  If an error occurs when evaluating the supplied function the        ;;
;;  Function Result will be nil and the error message will be printed   ;;
;;  to the command-line.                                                ;;
;;----------------------------------------------------------------------;;
 
(defun LM:ODBX ( fun lst sav / *error* app dbx dir doc dwl err rtn vrs )
 
    (defun *error* ( msg )
        (if (and (= 'vla-object (type dbx)) (not (vlax-object-released-p dbx)))
            (vlax-release-object dbx)
        )
        (if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
            (princ (strcat "\nError: " msg))
        )
        (princ)
    )
 
    (cond
        (   (not
                (or lst
                    (and (setq dir (LM:browseforfolder "Select Folder of Drawings to Process" nil 512))
                         (setq lst (mapcar '(lambda ( x ) (strcat dir "\\" x)) (vl-directory-files dir "*.dwg" 1)))
                    )
                )
            )
            nil
        )
        (   (progn
                (setq dbx
                    (vl-catch-all-apply 'vla-getinterfaceobject
                        (list (setq app (vlax-get-acad-object))
                            (if (< (setq vrs (atoi (getvar 'acadver))) 16)
                                "objectdbx.axdbdocument" (strcat "objectdbx.axdbdocument." (itoa vrs))
                            )
                        )
                    )
                )
                (or (null dbx) (vl-catch-all-error-p dbx))
            )
            (prompt "\nUnable to interface with ObjectDBX.")
        )
        (   t
            (vlax-for doc (vla-get-documents app)
                (setq dwl (cons (cons (strcase (vla-get-fullname doc)) doc) dwl))
            )
            (foreach dwg lst
                (if (or (setq doc (cdr (assoc (strcase dwg) dwl)))
                        (and (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-open (list dbx dwg))))
                             (setq doc dbx)
                        )
                    )
                    (progn
                        (setq rtn
                            (cons
                                (cons dwg
                                    (if (vl-catch-all-error-p (setq err (vl-catch-all-apply fun (list doc))))
                                        (prompt (strcat "\n" dwg "\t" (vl-catch-all-error-message err)))
                                        err
                                    )
                                )
                                rtn
                            )
                        )
                        (if sav (vla-saveas doc dwg))
                    )
                    (princ (strcat "\nError opening file: " (vl-filename-base dwg) ".dwg"))
                )
            )
            (if (= 'vla-object (type dbx))
                (vlax-release-object dbx)
            )
            (reverse rtn)
        )
    )
)
 
;;------------------=={ Browse for Folder }==-----------------;;
;;                                                            ;;
;;  Displays a dialog prompting the user to select a folder.  ;;
;;------------------------------------------------------------;;
;;  Author: Lee Mac, Copyright © 2013 - www.lee-mac.com       ;;
;;------------------------------------------------------------;;
;;  Arguments:                                                ;;
;;  msg - message to display at top of dialog                 ;;
;;  dir - root directory (or nil)                             ;;
;;  flg - bit-coded flag specifying dialog display settings   ;;
;;------------------------------------------------------------;;
;;  Returns:  Selected folder filepath, else nil.             ;;
;;------------------------------------------------------------;;
 
(defun LM:browseforfolder ( msg dir flg / err fld pth shl slf )
    (setq err
        (vl-catch-all-apply
            (function
                (lambda ( / app hwd )
                    (if (setq app (vlax-get-acad-object)
                              shl (vla-getinterfaceobject app "shell.application")
                              hwd (vl-catch-all-apply 'vla-get-hwnd (list app))
                              fld (vlax-invoke-method shl 'browseforfolder (if (vl-catch-all-error-p hwd) 0 hwd) msg flg dir)
                        )
                        (setq slf (vlax-get-property fld 'self)
                              pth (vlax-get-property slf 'path)
                              pth (vl-string-right-trim "\\" (vl-string-translate "/" "\\" pth))
                        )
                    )
                )
            )
        )
    )
    (if slf (vlax-release-object slf))
    (if fld (vlax-release-object fld))
    (if shl (vlax-release-object shl))
    (if (vl-catch-all-error-p err)
        (prompt (vl-catch-all-error-message err))
        pth
    )
)
 
(vl-load-com) (princ)
Ziele
Avatar użytkownika
ziele_o2k
 
Posty: 735
Dołączył(a): mar 18, 2014 11:33
Lokalizacja: Poznań


Powrót do AutoCAD

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników