Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Markieren mit vla-get-...

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:   Markieren mit vla-get-... (173 mal gelesen)
Emu1989
Mitglied
Elektroplaner


Sehen Sie sich das Profil von Emu1989 an!   Senden Sie eine Private Message an Emu1989  Schreiben Sie einen Gästebucheintrag für Emu1989

Beiträge: 20
Registriert: 10.11.2015

AutoCAD 2015

erstellt am: 03. Dez. 2018 18:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Tagchen

Habe eine Lisp gefunden, in welcher ich die Blöcke sperren und wieder freigeben kann. Die ist ganz gut und würde mir auch viel Zeit ersparen, allerdings sperrt sie mir die Blöcke im ganzen Dokument.


(vl-load-com) (princ)
  (vlax-for blk (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
      (if (and (= :vlax-false (vla-get-islayout blk))
                (= :vlax-false (vla-get-isxref  blk))
          )
          (vla-put-explodable blk :vlax-false)
      )
  )
  (princ)
)


Die Auswahlfunktion mit setq ... (car (entsel "\nBlbalabla.. und entget ist mir bekannt, kann ich hier allerdings nicht anwenden, da ich keine Ahnung habe, mit was ich: (vla-get-activedocument (vlax-get-acad-object)) ersetzten soll.

Vielleicht kann mir ja jemand helfen.

Gruss Emu

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Wolfgang Kirsch
Mitglied
Büroberater


Sehen Sie sich das Profil von Wolfgang Kirsch an!   Senden Sie eine Private Message an Wolfgang Kirsch  Schreiben Sie einen Gästebucheintrag für Wolfgang Kirsch

Beiträge: 37
Registriert: 29.04.2002

erstellt am: 03. Dez. 2018 20:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Emu1989 10 Unities + Antwort hilfreich

Da muss nichts ersetzt werden, die Idee mit entget ist schon recht gut.
Eine kleine Ergänzung reicht:

Code:

(defun c:not_explode (/ BLOCKNAMEN BLOCKNAMES IDX)
  (vl-load-com)
                                        ;(princ) ist hier überflüssig
  (setq blocknames (ssget (list (cons 0 "INSERT") (cons 67 0))))
                                        ; Auswahlsatz bilden: Blockreferenzen im Modellbereich
  (if blocknames                        ; wenn etwas gefunden wurde, dann
    (progn
      (setq idx 0)                      ; setze Index für Schleife
      (repeat (sslength blocknames)    ; wiederhole so oft, wie Objekte im Auswahlsatz sind
        (setq blocknamen
              (cons                    ; bilde eine Liste mit dem Namen der Blockreferenz
                (cdr (assoc 2 (entget (ssname blocknames idx))))
                                        ; hier den Namen extrahieren
                blocknamen            ; und durch das "cons" in die Liste "Blocknamen" werfen
                ) ;_ end of cons
              ) ;_ end of setq
        (setq idx (1+ idx))            ; setze index eins rauf
        ) ;_ end of repeat
      ) ;_ end of progn
    ) ;_ end of if
  (vlax-for blk (vla-get-blocks
                  (vla-get-activedocument (vlax-get-acad-object))
                  ) ;_ end of vla-get-blocks
    (if (and (member (vla-get-name blk) blocknamen)
                                        ; wenn der Name der Blockdefinition in der Liste der ausgewählten Blockreferenzen enthalten ist
            (= :vlax-false (vla-get-islayout blk))
            (= :vlax-false (vla-get-isxref blk))
            ) ;_ end of and
      (vla-put-explodable blk :vlax-false)
      ) ;_ end of if
    ) ;_ end of vlax-for
  (princ)
  ) ;_ end of defun
(c:not_explode)

Ist jetzt zwar ein Mix aus visual und vanilla Lisp, aber was soll's.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Emu1989
Mitglied
Elektroplaner


Sehen Sie sich das Profil von Emu1989 an!   Senden Sie eine Private Message an Emu1989  Schreiben Sie einen Gästebucheintrag für Emu1989

Beiträge: 20
Registriert: 10.11.2015

AutoCAD 2015

erstellt am: 04. Dez. 2018 09:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Kirsch

Wahnsinn wie lange ich gestern ausprobiert und versucht habe und du das aus der Hand schüttelst. 
Mit (member (vla-get-name blk) blocknamen) geht's 
Vielen Dank für deine Mühe und Zeit.
Die kurzen Inputs zu den Zeilen sind echt der Hit.


Jedoch noch eine kleine Frage;
wenn ich es richtig verstanden habe und ich einen Block markiere, wird mit den Zeilen ((setq idx 0) (repeat (sslength blocknames) ) eine Schleife gesetzt um jede Blockdefinition/-name im angewählten Block auszufiltern und in einer "temporären" liste zu speichern, welche wieder ausgelesen wird? Dementsprechend müsste dann in allen Unterblöcken ebenfalls (vla-put-explodable blk) auf vlax-false gesetzt werden? Oder sehe ich das falsch? =)

Grüsschen Emu

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Emu1989
Mitglied
Elektroplaner


Sehen Sie sich das Profil von Emu1989 an!   Senden Sie eine Private Message an Emu1989  Schreiben Sie einen Gästebucheintrag für Emu1989

Beiträge: 20
Registriert: 10.11.2015

AutoCAD 2015

erstellt am: 04. Dez. 2018 11:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Habe gerade gemerkt, dass bei einem Block mit Sichtbarkeitsparameter nur der momentane Sichtbarkeitszustand zur "explosion" freigegeben wird. 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 18754
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 04. Dez. 2018 11:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Emu1989 10 Unities + Antwort hilfreich

C4DP4P57
Mitglied
Technischer Zeichner


Sehen Sie sich das Profil von C4DP4P57 an!   Senden Sie eine Private Message an C4DP4P57  Schreiben Sie einen Gästebucheintrag für C4DP4P57

Beiträge: 110
Registriert: 06.05.2009

erstellt am: 04. Dez. 2018 14:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Emu1989 10 Unities + Antwort hilfreich

Hallo,

beziehst du das AutoCAD-Magazin? Im Heft 2/2008 gab es eine LISP namens Blockade.lsp mit fünf Befehlen (blocklock, blockunlock, blocklockall, blockunlockall, Switch-Blocklock). Schreib einfach mal die Redaktion an.
P.S. Da steht zwar "getestet unter 2006 bis 2008", aber bei mir unter AutoCAD 2019 läuft es ohne Probleme.
Gruß
Jörg

------------------
Wer immer tut, was er schon kann, bleibt immer das, was er schon ist.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Emu1989
Mitglied
Elektroplaner


Sehen Sie sich das Profil von Emu1989 an!   Senden Sie eine Private Message an Emu1989  Schreiben Sie einen Gästebucheintrag für Emu1989

Beiträge: 20
Registriert: 10.11.2015

AutoCAD 2015

erstellt am: 04. Dez. 2018 15:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Jörg

Danke für deinen super Tipp, ja das wäre genau das was ich suche, bis auf das, dass ich sicher 1000 Blöcke habe, bei welchen ich sep. die Namen auflisten müsste, da ich nur immer der erste Block gesperrt haben möchte. 

@cadffm:
Danke für deine Erklärung, momentan fehlt mir die Zeit, mich hier so tief einzulesen, daher habe ich auf Hilfe von hier gehofft. 
Selber machen macht natürlich Freude aber wenn ich etwas kann, helfe ich gerne jemandem, der das nicht kann, so hilft er mir sicherlich ebenfalls Mal, falls er etwas benötigt was er nicht kann. "Teamwork"

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Emu1989
Mitglied
Elektroplaner


Sehen Sie sich das Profil von Emu1989 an!   Senden Sie eine Private Message an Emu1989  Schreiben Sie einen Gästebucheintrag für Emu1989

Beiträge: 20
Registriert: 10.11.2015

AutoCAD 2015

erstellt am: 04. Dez. 2018 16:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


PropExp.lsp

 
Habe etwas gefunden, was mir das Leben nun bedeutend einfacher macht.
Danke trotzdem allen für eure Hilfe. Hoffe ihr könnt dies ebenfalls so gut gebrauchen wie ich.   (Datei angehängt)

Gruss Emanuel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2018 CAD.de | Impressum | Datenschutz