Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Alles auf vonBlock

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Alles auf vonBlock (1286 mal gelesen)
Balrok
Mitglied
Technischer Zeichner


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

Beiträge: 429
Registriert: 02.06.2005

Win10, 64Bit
AutoCad Architcture 2021
LiNear 2021
EPLAN P8

erstellt am: 22. Okt. 2020 12: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 ihr Lieben,

ich habe da mal eine Frage und muss euer Wissen anzapfen. Ich wollte nuke so umschreiben, dass er mir alles auf vonBlock legt anstatt auf vonLayer.
Irgendwas mache aber falsch. Kann mir da jemand weiterhelfen?

;Redefines ALL objects in any block in the drawing on layer 0.
;(c)Jay Garnett (email jgarnett@enteract.com) Written 1/14/97
;web page http://www.enteract.com/~jgarnett/lispfactory.htm
;Updated 1/25/97 - added select mode
;
;NUKE.LSP redefines all objects in a block on layer 0, with color and linetype
;set to BYLAYER.  BNUKED blocks will then take on the properties of the layer
;that they are inserted on. The routine works by modifing objects in the block table,
;so the blocks never have to be exploded.
;
;The global method redefines ALL objects in every block in the current drawing,
;except dimensions, hatching or xrefs, even if they are on a layer that is
;frozen or turned off.
;
;The select method redefines blocks selected with any standard selection method,
;as well as any blocks nested in the selected block(s).

(defun To-0( BLCK / BNAME BLIST E EDATA SPIN TMP )
 
  ;;; Prints a pinwheel on the command line
  (defun Spin ( )
      (setq SYM
        (cond
            ((= SYM nil) "-")
            ((= SYM "-") "\\")
            ((= SYM "\\") "|")
            ((= SYM "|") "/")
            ((= SYM "/") "-")
        )
      )
      (princ (strcat "\rScanning... " SYM "                                    "))
  );end spin
 
  (if (=(type BLCK)(read "LIST"))(setq TMP(car BLCK) BLIST(cdr BLCK) BLCK TMP TMP nil))
  (setq BLCK(tblsearch "BLOCK" BLCK))
  (if
      (and
        (/=(logand(cdr(assoc 70 BLCK))1)1)  ;skips annomyous blocks
        (/= (logand(cdr(assoc 70 BLCK))4)4) ;skips xrefs
      );and
      (progn
        (setq E (cdr (assoc -2 BLCK)))
        (while E
            (if (=(cdr(assoc 0 (entget E))) "INSERT") ;If the object is a block
              (progn
                  (setq BNAME(cdr(assoc 2(entget E)))) ;save the name to a list
                  (if (not (member BNAME BLIST))
                    (if (not BLIST)(setq BLIST (list BNAME)) ;create the list if it doesn't exist
                        (setq BLIST(append BLIST(list BNAME)))
                    );if
                  );if
              );progn     
            );if
            (setq EDATA (entget E))
            (if(assoc 62 EDATA) ;Resets object color to BYBLOCK if it isn't.
              (setq EDATA(subst(cons 62 256)(assoc 62 EDATA)EDATA))
            );if
            (if(assoc 6 EDATA) ;Resets object linetype to BYBLOCK if it isn't.
              (setq EDATA(subst(cons 6 "BYBLOCK")(assoc 6 EDATA)EDATA))
            );if
            (setq EDATA(subst (cons 8 "0")(assoc 8 EDATA)EDATA));changes layer to 0
            (entmod EDATA);updates entity
            (setq E (entnext E));get next enitiy, nil if end of block
            (Spin)
        );end while E
      );progn
  );if
  BLIST; returns names of any nested blocks
);defun


(defun C:BNUKE( / BLK_NM CHOICE E EDATA IDX PK_BLK SS)
  (command "._undo" "m")
  (setq CHOICE "S")
  (initget "G S")
  (setq CHOICE(getkword (strcat "\n<G>lobal or <S>elect block: <" CHOICE "> ")))
  (if(not CHOICE)(setq CHOICE "S"))
  (if (= (strcase CHOICE) "G")
      ;global bnuke
      (while (setq BLK_NM(tblnext "BLOCK" (null BLK_NM)))
        (TO-0 (cdr(assoc 2 BLK_NM)))
      );while
      ;nuke selected block
      (progn
        (prompt "\nSelect Block(s) to BNuke: ")
        (setq SS(ssget '((0 . "INSERT"))))
        (setq IDX 0)
        (repeat (sslength SS)
            (setq BLK(cdr(assoc 2 (entget(ssname SS IDX)))))
            (cond
              (PK_BLK (setq PK_BLK(append PK_BLK (list BLK))))
              (T (setq PK_BLK(list BLK)))
            );cond
            (setq IDX(1+ IDX))
        );repeat
        (while PK_BLK
            (setq PK_BLK(To-0 PK_BLK))
        );while
      );progn
  );if
  (command "._regen")
  (princ "\rFinished                  ")
  (princ)
);defun
(prompt"\BNUKE zum Starten.")(princ)

Grüße
Balrok

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: 21625
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 22. Okt. 2020 12:43    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 Balrok 10 Unities + Antwort hilfreich

Wenn die ganzen Hinweise und Codes zum Thema NUKE BYBLOCK oder NUKE VONBLOCK auf CAD.de nicht ausreichen,
[Google: site:cad.de nuke vonblock] / [Google: site:cad.de nuke byblock]was ist denn mit dem Befehl SetNestedObjectsByBlock ?


Kurz zum Problem, oder zumindest zu einem der Probleme im Code:

(if(assoc 62 EDATA) ; Wenn eine Farbe ungleich VonLayer zugeordnet ist, dann...
              (setq EDATA(subst(cons 62 256)(assoc 62 EDATA)EDATA)) ; setze die Farbe VonLayer
            );if

Ich dachte du willst VonBlock?

            );if
            (if(assoc 6 EDATA) ; Wenn ein Linientyp ungleich VonLayer zugeordnet ist, dann...
              (setq EDATA(subst(cons 6 "BYBLOCK")(assoc 6 EDATA)EDATA)) ; Und bei VonLayer soll es bei "VonLayer" bleiben?
            );if

Da fehlt also noch Einiges.

Was ist mir SETNESTEDOBJECTSBYBLOCK (sodern man davon ausgehen darf das alle ACA nutzen)?

Der wäre einfach zu steuern, ignoriert auch die Eigenschaft "Transparenz", also ziemlich das was Nuke machen würde..
für Layer0,Farbe,Linientyp,Linienstärke
Bis auf die "Global"Funktion, die ist nicht 1:1 vorhanden, man MUSS Blockreferenzen wählen.

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

Balrok
Mitglied
Technischer Zeichner


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

Beiträge: 429
Registriert: 02.06.2005

Win10, 64Bit
AutoCad Architcture 2021
LiNear 2021
EPLAN P8

erstellt am: 22. Okt. 2020 14:03    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

Was ist mir SETNESTEDOBJECTSBYBLOCK (sodern man davon ausgehen darf das alle ACA nutzen)?

Wer denkt sich denn so einen langen Befehl aus? 
Ist genau was ich brauche.

Ich habe bei google gesucht, allerdings mit den falschen Stichwörtern. 
Heraus kam immer nuke aber nichts anderes.

DANKE schon mal.
Hat man die Möglichkeit den Befehl auch abzukürzen, oder ist das kompliziert? 

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: 21625
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 22. Okt. 2020 14:14    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 Balrok 10 Unities + Antwort hilfreich

PGP Datei?

Zudem: Der Befehl steht dir ja jedes Mal zur Verfügung wenn du Blockreferenzen markierst und das Kontextmenü aufrufst ..
Ich halte mich aber besser raus, ich habe nämlich keine Ahnung von deinem Programm(ACA), sorry.

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

Balrok
Mitglied
Technischer Zeichner


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

Beiträge: 429
Registriert: 02.06.2005

Win10, 64Bit
AutoCad Architcture 2021
LiNear 2021
EPLAN P8

erstellt am: 23. Okt. 2020 06:54    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

Danke dir.
Was meinst Du denn mit PGP-Datei?
...und wieso kennst Du dich nicht mit ACA aus.
AutoCad Architecture ist doch nur eine zusätzliche Funktion für
AutoCad. Das Grundprogramm ist doch das selbe.

Grüße
Balrok

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: 21625
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 23. Okt. 2020 08: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 Nur für Balrok 10 Unities + Antwort hilfreich

> Hat man die Möglichkeit den Befehl auch abzukürzen, oder ist das kompliziert?
>> PGP Datei?
>>> Was meinst Du denn mit PGP-Datei?

[F1] PGP -> Befehlsaliasse
  hätte man dort nichts gefunden:
Google: AutoCAD PGP

> Ich halte mich aber besser raus, ich habe nämlich keine Ahnung von deinem Programm(ACA), sorry.
>> ...und wieso kennst Du dich nicht mit ACA aus.
>>> weil ich dies nie gelernt oder angewendet habe (Ausnahme: Im Kurs ADT3.0 schon mal gezeigt bekommen)
>> AutoCad Architecture ist doch nur eine zusätzliche Funktion für AutoCad.
>>> Genau, abgesehen von den Kleinigkeiten welche auch den "AutoCAD Standard" beeinflussen.
>> Das Grundprogramm ist doch das selbe.
>>> Richtig, in dem Kernprodukt bin in weiten Teilen fit, aber nicht in ACA.
    Ich weiß also nicht wo ACA-Funktionalität das AutoCAD-Standardverhalten beeinflußt,
    kenne die Befehle/Funktionen und Menüs nicht, .. Kurz: Keine Ahnung von Architecture.
    SETNESTEDOBJECTSBYBLOCK zum Beispiel ist kein AutoCAD-Befehl.


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

Balrok
Mitglied
Technischer Zeichner


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

Beiträge: 429
Registriert: 02.06.2005

Win10, 64Bit
AutoCad Architcture 2021
LiNear 2021
EPLAN P8

erstellt am: 23. Okt. 2020 08:59    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

Also ich finde, Du kennst dich MEGA aus!!!

DANKE NOCHMALS!!!

[Diese Nachricht wurde von Balrok am 23. Okt. 2020 editiert.]

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

Balrok
Mitglied
Technischer Zeichner


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

Beiträge: 429
Registriert: 02.06.2005

Win10, 64Bit
AutoCad Architcture 2021
LiNear 2021
EPLAN P8

erstellt am: 26. Apr. 2023 08:13    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

Ich muss das Thema leider nochmal aufgreifen und euer Wissen anzapfen.

Ich habe die nuke-LISP nun so umgestalten können, dass die LISP nun alle Elemete des Blocks auf Layer 0 setzt,
den Linientyp ausklammert (d.h., was vorher eine gestrichelte Liene war ist immer noch eine gestrichelte Linie),
aber leider setzt er mir meine Farbe nicht auf VonBlock! 

Was muss ich da noch verändern?

Normalerweise müsste das doch so richtig sein? Die Zeilen die ich verändert habe ist die

(if(assoc 62 EDATA) ;Resets object color to BYBLOCK if it isn't.
              (setq EDATA(subst(cons 62 "BYBLOCK")(assoc 62 EDATA)EDATA))

Diese beiden Zeilen stehen weiter unten.

(defun To-0( BLCK / BNAME BLIST E EDATA SPIN TMP )
 
  ;;; Prints a pinwheel on the command line
  (defun Spin ( )
      (setq SYM
        (cond
            ((= SYM nil) "-")
            ((= SYM "-") "\\")
            ((= SYM "\\") "|")
            ((= SYM "|") "/")
            ((= SYM "/") "-")
        )
      )
      (princ (strcat "\rScanning... " SYM "                                    "))
  );end spin
 
  (if (=(type BLCK)(read "LIST"))(setq TMP(car BLCK) BLIST(cdr BLCK) BLCK TMP TMP nil))
  (setq BLCK(tblsearch "BLOCK" BLCK))
  (if
      (and
        (/=(logand(cdr(assoc 70 BLCK))1)1)  ;skips annomyous blocks
        (/= (logand(cdr(assoc 70 BLCK))4)4) ;skips xrefs
      );and
      (progn
        (setq E (cdr (assoc -2 BLCK)))
        (while E
            (if (=(cdr(assoc 0 (entget E))) "INSERT") ;If the object is a block
              (progn
                  (setq BNAME(cdr(assoc 2(entget E)))) ;save the name to a list
                  (if (not (member BNAME BLIST))
                    (if (not BLIST)(setq BLIST (list BNAME)) ;create the list if it doesn't exist
                        (setq BLIST(append BLIST(list BNAME)))
                    );if
                  );if
              );progn     
            );if
            (setq EDATA (entget E))
            (if(assoc 62 EDATA) ;Resets object color to BYBLOCK if it isn't.
              (setq EDATA(subst(cons 62 "BYBLOCK")(assoc 62 EDATA)EDATA))
            );if
            ;(if(assoc 6 EDATA) ;Resets object linetype to BYBLOCK if it isn't.
              ;(setq EDATA(subst(cons 6 "BYBLOCK")(assoc 6 EDATA)EDATA))
            ;if
            (setq EDATA(subst (cons 8 "0")(assoc 8 EDATA)EDATA));changes layer to 0
            (entmod EDATA);updates entity
            (setq E (entnext E));get next enitiy, nil if end of block
            (Spin)
        );end while E
      );progn
  );if
  BLIST; returns names of any nested blocks
);defun


(defun C:NUKE( / BLK_NM CHOICE E EDATA IDX PK_BLK SS)
  (command "._undo" "m")
  (setq CHOICE "S")
  (initget "G S")
  (setq CHOICE(getkword (strcat "\n<G>lobal or <S>elect block: <" CHOICE "> ")))
  (if(not CHOICE)(setq CHOICE "S"))
  (if (= (strcase CHOICE) "G")
      ;global nuke
      (while (setq BLK_NM(tblnext "BLOCK" (null BLK_NM)))
        (TO-0 (cdr(assoc 2 BLK_NM)))
      );while
      ;nuke selected block
      (progn
        (prompt "\nSelect Block(s) to Nuke: ")
        (setq SS(ssget '((0 . "INSERT"))))
        (setq IDX 0)
        (repeat (sslength SS)
            (setq BLK(cdr(assoc 2 (entget(ssname SS IDX)))))
            (cond
              (PK_BLK (setq PK_BLK(append PK_BLK (list BLK))))
              (T (setq PK_BLK(list BLK)))
            );cond
            (setq IDX(1+ IDX))
        );repeat
        (while PK_BLK
            (setq PK_BLK(To-0 PK_BLK))
        );while
      );progn
  );if
  (command "._regen")
  (princ "\rFinished                  ")
  (princ)
);defun
(prompt"\nNUKE zum Starten.")(princ)

Kann mir jemand helfen?
Grüße

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: 21625
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 26. Apr. 2023 08:25    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 Balrok 10 Unities + Antwort hilfreich

als erstes würde ich darüber stolpern das du
(cons 62 "BYBLOCK") geschrieben hast, Farben aber immer als Ganzzahl gespeichert werden - ein "STRING" also in jedem Fall falsch ist.
https://help.autodesk.com/view/OARX/2024/DEU/?guid=GUID-3F0380A5-1C15-464D-BC66-2C5F094BCFB9

Objekt mit den Eigenschaften erstellen welche man möchte, diese dann mit (entget(car(entsel))'("*")) abfragen.

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: 21625
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 26. Apr. 2023 08:30    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 Balrok 10 Unities + Antwort hilfreich

ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist!

Zitat:
Original erstellt von cadffm:
(if(assoc 6 EDATA) ; Wenn ein Linientyp ungleich VonLayer zugeordnet ist, dann...
              (setq EDATA(subst(cons 6 "BYBLOCK")(assoc 6 EDATA)EDATA)) ; Und bei VonLayer soll es bei "VonLayer" bleiben?
            );if

.


Das gilt natürlich auch heute noch, auch für Farbe (statt Linientyp),
Objekte mit TrueColor/Farbbuch Farben sind noch nicht berücksichtigt,
Transparenz?

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)2023 CAD.de | Impressum | Datenschutz