Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  ssget verschachtelte Blöcke

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:  ssget verschachtelte Blöcke (3548 mal gelesen)
Frank-WZB
Mitglied
Konstrukteur-WZB

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

Beiträge: 7
Registriert: 22.09.2004

Acad2004, LT2004
deutsch
Win2000, NT4

erstellt am: 22. Sep. 2004 12:49    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 Lisp Gemeinde

1. Wie wählt man per ssget nur die Blöcke an in die weitere Blöcke eingebaut sind, die angewählten sollen dann per command ursprung zerlegt werden.
2. Ist das auch per Fensterwahl möglich damit nur ein Teil der Zeichnungsblöcke zerlegt wird,(die Werkstattrechner sind schon etwas in die Jahre gekommen und dadurch recht langsam)
3. Wie sieht der Ablauf für den Mehrfachdurchlauf aus, bis keine Blockverschachtelungen mehr da sind.

Das ganze soll unter Acad2004 und LT2004 mit LT-Extender verwendet werden

für ein paar erklärende Worte bin ich dankbar,
ich zähle mich immer noch zu den Lisp-Anfängern

Grund:  Wir haben viele verschachtelte Blöcke,
d.h. in Blöcken sind weitere Blöcke und Zeichnungselemente zusammengefast, für das Auslesen in dxf's per Objektwahl und das Erstellen von Koordinatentabellen für die CNC-Bearbeitung sollen alle oberen Blockebenen aufgelöst werden,

! es sollen also nur die Blöcke übrig bleiben, die keine weiteren Blöcke mehr enthalten !

(Die Originalzeichnung bleibt automatisch unverändert, weil die Werkstatt keine Schreibrechte hat)

Vielen Dank im voraus!

Frank

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

Alles

erstellt am: 22. Sep. 2004 13: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 Nur für Frank-WZB 10 Unities + Antwort hilfreich

EDIT: WILLKOMMEN !!

Über ssget geht das nicht, dazu gehört mehr...
Du müßtest jede Blockdefinition überprüfen ob sie INSERTs enthalten, wenn JA = Verschachtelung. usw

Zu diesem Thema (Blockdefinitionen etc) gibt es hier bereits mehrere Thread´s und auch Code-Schnipsel !

[ Das später auf eine Fensterwahl zu begrenzen ist dann ja kein Thema !? ]

siehe zB Hier (Suchfunktion nutzen) http://ww3.cad.de/foren/ubb/Forum145/HTML/000771.shtml 

------------------
       
Bitte Systemdaten eintragen (siehe links unter dem Namen), wie & warum siehst du HIER

[Diese Nachricht wurde von cadffm am 22. Sep. 2004 editiert.]

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 22. Sep. 2004 13:11    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 Frank-WZB 10 Unities + Antwort hilfreich

Hallo Frank,

und auch von mir ein herzliches Willkommen.

Sebastian hat Recht,

am besten ist, du ermittelst dir alle Blöcke. Aus dieser Liste entfernst du alle die, die einen INSERT enthalten in deren Definition. Aus den verbleibenden erstellst du dir einen Auswahlsatz, und explodierst die einzeln! siehe: hier

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 22. Sep. 2004 13:28    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 Frank-WZB 10 Unities + Antwort hilfreich

Nach all den guten Tips noch einer : Guck dir mal Mapcar's Seiten an, und auch etwas (schnell zusammenkopierten) Code:

(defun c:INSERTEXPLODE (/ BLOCKDEF OBJEKT FOUND LISTE)
  (princ "\n Verschachtelte Blöcke auflösen \n")
  (command "._undo" "m")
  (while (setq BLOCKDEF (tblnext "BLOCK" (null BLOCKDEF)))    ; BLocktable durchlaufen
    (progn
      (setq OBJEKT (cdr (assoc -2 BLOCKDEF)))        ; Adresse der Blockelemente holen
      (setq FOUND nil)
      (while (and OBJEKT (not FOUND))             
        (setq FOUND (=(cdr(assoc 0 (entget OBJEKT))) "INSERT"));Blockreferenz gefunden
        (setq OBJEKT (entnext OBJEKT))        ; nächstes Blockelement, Blockende="nil"
      )
      (if FOUND (setq LISTE (cons (cdr(assoc 2 BLOCKDEF)) LISTE))) 
    )
  )   
  (if(and Liste
          (setq AUSWAHL (ssget "_X"  (list '(0 . "INSERT")(cons 410 (getvar "CTAB")))))
     )    
    (progn
      (while (> (sslength AUSWAHL) 0 )
        (setq OBJEKT (entlast))
        (setq INDEX -1)
        (repeat (sslength AUSWAHL)             ; Auswahl durchlaufen und abarbeiten...
          (setq INSERT(ssname AUSWAHL (setq INDEX (1+ INDEX))))
          (if(and(=(cdr(assoc 0 (entget INSERT))) "INSERT")
                 (member(cdr(assoc 2 (entget INSERT))) LISTE)
             )   
            (command "_.explode" (ssname AUSWAHL INDEX))            ;... dann auflösen
          )         
        )
        (setq AUSWAHL(ssadd))                            ; leeren Auswahlsatz erzeugen
        (setq OBJEKT (entnext OBJEKT))          ; auf das erste Element nach "Merker"!
        (while OBJEKT         
          (if (=(cdr(assoc 0 (entget OBJEKT))) "INSERT")                       
            (setq AUSWAHL  (ssadd OBJEKT AUSWAHL))   ; Auswahlsatz mit neuen Elementen
          ) 
          (setq OBJEKT (entnext OBJEKT))            
        )
      )            
      (initget "J N")
      (if (not(=(getkword(strcat "\nUnreferenzierte Blöcke bereinigen? <J>a / <N>ein: <J> "))
                "N"
              )
          )              
        (repeat 5  (command "._purge" "_BL" "*" "_N"))
      )   
      (command "._regen")
    )
  ) 
)

------------------
    - Thomas -
"Bei 99% aller Problemen ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

Frank-WZB
Mitglied
Konstrukteur-WZB

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

Beiträge: 7
Registriert: 22.09.2004

Acad2004, LT2004
deutsch
Win2000, NT4

erstellt am: 23. Sep. 2004 06:58    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 für das Willkommen !

Ihr seid ja super schnell
Danke für die einführenden Erläuterungen

Die Lisp "insertexplode" von CADmium trifft genau ins Schwarze,
also volle Punktzahl

Für andere die's nutzen wollen noch einige Testhinweise von mir dazu:
zuerst lief es nicht,
(bei Zeile 27) Objekt wählen:-_explode
*ungültige Auswahl*
erwartet einen Punkt oder Letztes/Alle/Gruppe/Klasse
dies liegt bei mir an den Layout's zum Ausdrucken, als diese aus der Zeichnung entfernt waren dann funktionierte es,
die ganze Zeichnung abzuarbeiten dauert allerdings recht lange, weil wirklich alles wunschgemäß zerlegt wird,
also (in Zeile 16) bei ssget das "_X" raus damit man einen Zeichnungsbereich anwählen kann, dann arbeitet das Programm nur dort wo ich es brauche und ist richtig schnell,
dadurch werden auch nur noch Elemente aus dem aktuellen Zeichnungsbereich gewählt und die Fehlermeldung ist weg.

Herzlichen Dank an CADmium,  das Problem ist gelöst

Gruß Frank

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

Jörg
Mitglied
selbstständig


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

Beiträge: 104
Registriert: 24.07.2000

Bricscad V8

erstellt am: 09. Aug. 2022 08:08    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 Frank-WZB 10 Unities + Antwort hilfreich

Hallo,

bei mir werden durch insertexplode teilweise Blöcke völlig aufgelöst.
Da bleiben zum Teil nur noch Polylinien übrig.

Ich habe gehofft, das die unterste Blockstruktur erhalten bleibt.
Kann man da noch etwas anpassen?

Danke und Grüße
Jörg


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

Alles

erstellt am: 09. Aug. 2022 08:32    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 Frank-WZB 10 Unities + Antwort hilfreich

Hallo,
spontan würde ich auch sagen: Das sollte nicht geschehen, stelle uns doch bitte ein Beispiel zur Verfügung bei dem das passiert.
(bitte lösche alles andere, eine Blockreferenz ist völlig ausreichend in der DWG, danke)

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

Jörg
Mitglied
selbstständig


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

Beiträge: 104
Registriert: 24.07.2000

Bricscad V8

erstellt am: 09. Aug. 2022 08:52    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 Frank-WZB 10 Unities + Antwort hilfreich


55402_a.dwg

 
Beiliegend ein Beispiel.
Die dwg stammt aus einem Export aus Hicad.
Insertexplode wurde mit Bricscad V8.1 ausgeführt

Danke und Grüße
Jörg

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

Alles

erstellt am: 09. Aug. 2022 09: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 Nur für Frank-WZB 10 Unities + Antwort hilfreich

Das Bricscad solltest du vielleicht direkt am Anfang erwähnen 
Dein Modell hat zwei Blockreferenzen, bei beiden funktioniert es bei meinem Test korrekt.
Ich testete aber mit V16 und natürlich mit Autodesk Produkten - wofür dieses Tool geschrieben wurde,
wir sind hier ja beim AutoDESK-LISP 

ANS3D30_02007
hinterlässt weit über dreihundert Blockreferenzen

und
DVI_FIGURE_02813 verbleibt als Referenz auf Block _D2

Nehme bitte selbst einmal die Datei aus dem Forum (herunterladen falls du ggf. zwischenzeitlich daran gearbeitet hast),
die Datei öffnen und das Programm einmal ausführen, danach die Datei unter anderem Namen speichern und hier wieder anhängen.

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

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 09. Aug. 2022 09: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 Nur für Frank-WZB 10 Unities + Antwort hilfreich

Abgesehen davon, das BricsCAD zu über 90% genauso funktioniert wie AutoCAD wird dir vermutlich für so ein altes BricsCAD auch keine Tests anbieten können.
Besorg' dir mal eine neue Version.


------------------
Gruß
CADwiesel
Besucht uns im CHAT

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

Jörg
Mitglied
selbstständig


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

Beiträge: 104
Registriert: 24.07.2000

Bricscad V8

erstellt am: 09. Aug. 2022 09: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 Frank-WZB 10 Unities + Antwort hilfreich


55402_a1.DWG

 
Hier die Datei mit _insertexplode in Bricscad

[Diese Nachricht wurde von Jörg am 09. Aug. 2022 editiert.]

[Diese Nachricht wurde von Jörg am 09. Aug. 2022 editiert.]

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

Alles

erstellt am: 09. Aug. 2022 09: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 Frank-WZB 10 Unities + Antwort hilfreich

Am liebsten JA,
aber ich habe geschrieben "herunterladen falls du ggf. zwischenzeitlich daran gearbeitet hast"
Warum: Erfahrung mit Computernanwendern 

Es kommt einfach sehr oft vor das ein Anwender nicht vom selben Dateistand aus testet
und statt 10min Erklärung (die im Zweifelsfall eh nichts bringt) umgeht man diesen unnötigen
Ärger in dem man einfach sagt: Datei selbst herunterladen und öffnen.
Dieser Anleitung kann jeder folgen und der Dateiinhalt der sich dann präsentiert und auf dem
der Test durchgeführt wird, ist uns dann auch 100%ig bekannt,

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

Jörg
Mitglied
selbstständig


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

Beiträge: 104
Registriert: 24.07.2000

Bricscad V8

erstellt am: 09. Aug. 2022 09: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 Nur für Frank-WZB 10 Unities + Antwort hilfreich

Verstehe.
Habe den vorherigen Beitrag editiert und die unter Bricscad gesprengte Zeichnung hochgeladen.
Könnte ich mir die unter Autocad gesprengte Datei mal ansehen?
Danke und Grüße
Jörg

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

Alles

erstellt am: 09. Aug. 2022 09:41    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 Frank-WZB 10 Unities + Antwort hilfreich

357 Blockreferenzen vorhanden, wie in AutoCAD - daher spare ich mir eine Datei zu erzeugen für dich.
Deine Aussage passt also nicht zu dem Beispiel oder deine Beschreibung war irgendwie falsch bzw. unpräzise.

Prüfe selbst noch einmal das Ergebnis und wenn du die 357 Blockreferenzen siehst und dich nicht wunderst:
Fange mal an dein Anliegen neu (und besser) zu beschreiben 

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

Alles

erstellt am: 09. Aug. 2022 09:44    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 Frank-WZB 10 Unities + Antwort hilfreich

Meine Vermutung ist ja: Du verwechselt unterste mit obersten Blockebene und du möchtest damit genau das Gegenteil von dem erreichen worum es in diesem Thread geht.

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

Jörg
Mitglied
selbstständig


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

Beiträge: 104
Registriert: 24.07.2000

Bricscad V8

erstellt am: 09. Aug. 2022 10: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 Nur für Frank-WZB 10 Unities + Antwort hilfreich


Alu-RR-70x20.png

 
Sorry, wenn es zu Missverständnissen kommt...

Ein Beispiel zu der Zeichnung:
Wenn ich in der Zeichnung die Funktion Ursprung ausführe und dann immer wieder auf das Alu RR 70x20 klicke und wiederhole so wird bleibt irgendwann die Blockreferenz Alu RR 70x20_02483.
Diesen Stand will ich erreichen. Wenn ich _explode weiter wiederhole bleiben nur noch Polylinien. Das ist dann zu viel aufgelöst.

Nutze ich die Funktion insertexplode wird das Alu RR 70x20 in Polylinien aufgelöst (was ich ja nicht haben möchte!).
Andere Blockreferenzen werden wiederum nicht in Polylinien aufgelöst (so sollte es ja auch sein)

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

Alles

erstellt am: 09. Aug. 2022 10:15    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 Frank-WZB 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Jörg:
>>"so wird bleibt irgendwann die Blockreferenz Alu RR 70x20_02483"
Das prüfe ich jetzt nicht, aber die letzte Blockreferenz ist vom Block TFIELD_02488 und nicht vom Block Alu RR 70x20_02483

>>"Diesen Stand will ich erreichen."
Das ist aber die 2. verschachtelungsebene von 6 oder 7, also "irgendwas mittendrin"

Man könnte zwar ein Programm schreiben was immer "irgendwas mittendrin" stehen lässt,
oder auch immer nur die 3. Verschachtelungsebene, abeer ich befürchte du würdest mit beiden
Varianten nicht glücklich werden.
Im Einzelfall des Textes "Alu RR 70x20" würden beide das gewünschte Ergebnis liefern
aber ich befürchte du willst nicht immer die 3.Ebene.

>>" Wenn ich _explode weiter wiederhole bleiben nur noch Polylinien. "
Nicht im Fall von 'Alu RR 70x20_02483', da kommen noch 5 weitere Verschachtelungen
und bei der zugehörigen "Hinweislinie" sind es immerhin noch 4 (also eine weniger wie beim Text).


>>"Nutze ich die Funktion insertexplode wird das Alu RR 70x20 in Polylinien aufgelöst (was ich ja nicht haben möchte!).
>>"Andere Blockreferenzen werden wiederum nicht in Polylinien aufgelöst (so sollte es ja auch sein)"

Das Programm ist dafür geschrieben Blockreferenzen auszulösen solange diese eine andere Blockreferenz enthalten,
für nichts anderes und genau das macht das Programm (auch bei dir).


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

Jörg
Mitglied
selbstständig


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

Beiträge: 104
Registriert: 24.07.2000

Bricscad V8

erstellt am: 09. Aug. 2022 10:19    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 Frank-WZB 10 Unities + Antwort hilfreich

Mir ist aufgefallen, das die Bockreferenzen welche fälschlicherweise aufgelöst werden, aus 2D-Polylinien bestehen.
Die Blockreferenzen die nicht aufgelöst werden, bestehen aus Linien.
Ist das Ursache?


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

Alles

erstellt am: 09. Aug. 2022 10:26    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 Frank-WZB 10 Unities + Antwort hilfreich

Lese meine letzte Antwort vielleicht noch einmal (am Ende hatte ich auch noch ergänzt).

Hier mal eine Vermutung wie deine Anforderung aussehen könnte - wenn ich es denn richtig verstanden habe.
Entgegen dem Thema/Ziel um welches in diesem Thread eigentlich ging ist dein Wunsch:

Blockreferenzen auflösen solange daraus wiederum nur Blockreferenzen verbleiben.
Allerdings wäre das in deinem konkreten Fall der Block Alu RR 70x20_02484 und nicht der Block Alu RR 70x20_02483,
daher bin ich mir noch etwas unsicher ob ich es richtig erfasst habe.

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

Jörg
Mitglied
selbstständig


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

Beiträge: 104
Registriert: 24.07.2000

Bricscad V8

erstellt am: 09. Aug. 2022 10:32    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 Frank-WZB 10 Unities + Antwort hilfreich

"Blockreferenzen auflösen solange daraus wiederum nur Blockreferenzen verbleiben."

Gibt es dafür denn eine Funktion?

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

Alles

erstellt am: 09. Aug. 2022 10:42    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 Frank-WZB 10 Unities + Antwort hilfreich

Nein,
sonst hätte ich dir den Befehl gleich genannt.
Bleibt also nur eine Programmmerweiterung, ein Tool.
Wobei.. keine Ahnung, ich kenne mich mit Bricscad v8 nicht aus,
ich bin AutoCAD Anwender  

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

Jörg
Mitglied
selbstständig


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

Beiträge: 104
Registriert: 24.07.2000

Bricscad V8

erstellt am: 09. Aug. 2022 11: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 Nur für Frank-WZB 10 Unities + Antwort hilfreich

Geht es hier um das gleiche Problem?
https://ww3.cad.de/foren/ubb/Forum53/HTML/003450.shtml

Bei Nutzung des lisp exall hängt sich Bricscad leider auf (bzw. wird immer wieder in die Funktion Applikations Datien laden gesprungen)!.

Und VLX laufen wohl nicht unter Bricscad


[Diese Nachricht wurde von Jörg am 09. Aug. 2022 editiert.]

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

Alles

erstellt am: 09. Aug. 2022 11: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 Nur für Frank-WZB 10 Unities + Antwort hilfreich


INSERTEXPLODE-X.JPG

 
Also wenn du dich mit dem "Alu RR 70x20_02484" vs. "Alu RR 70x20_02483" nur vertan hast, wovon ich mal ausgehe,
dann versuche es mal so: <siehe Anhang>

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

Alles

erstellt am: 09. Aug. 2022 11:15    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 Frank-WZB 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Jörg:
Geht es hier um das gleiche Problem?
https://ww3.cad.de/foren/ubb/Forum53/HTML/003450.shtml


Um das gleiche Problem (Blockverschachtelungen automatisch auflösen), aber wie auch hier im Thread um ein anderes Resultat.
Dort möchte man einfach alle Blockreferenzen auflösen, ALLE.

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

archtools
Mitglied



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

Beiträge: 823
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 10. Aug. 2022 10:22    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 Frank-WZB 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Jörg:
Hallo,

bei mir werden durch insertexplode teilweise Blöcke völlig aufgelöst.
Da bleiben zum Teil nur noch Polylinien übrig.


Du musst das richtig herum machen:

1. Aus der Block-Table alle Blocknamen finden, bei denen INSERTs in der Blockdefinition sind.

2. Nacheinander mit SSGET und Filter auf die gefundenen Blocknamen die INSERTs finden, und diese nur einmal auflösen. Das machst Du solange, bis keine INSERTs mit Blocknamen aus 1) mehr gefunden werden.

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

archtools
Mitglied



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

Beiträge: 823
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 13. Aug. 2022 14:44    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 Frank-WZB 10 Unities + Antwort hilfreich

Forumssoftware ist kaputt:
Zitat:
Original erstellt von :
[B][/B]

Hier hast Du eine Funktion, die Dir alle Elemente einer Table liefert, also auch Blockdefinitionen , inkl. anonyme Blöcke. Aufzurufen für Block-Table: (get-table-list "BLOCK")

(defun get-table-list (tbl / lst nxt)
  (setq tbl (strcase tbl)
        lst (list (cdr (assoc 2 (tblnext tbl T))))
  )
  (while (setq nxt (tblnext tbl))
    (setq lst (cons (cdr (assoc 2 nxt)) lst))
  )
  (vl-sort lst '< )
)

Und hier hast Du eine Funktion, die Dir die Entities für eine Blockdefinition mit Namen <name> liefert, wie sie von der get-table-list kommen:

(defun get-blockdef-entities (name / en result space el)
  (setq result (list (setq en (tblobjname "BLOCK" name))))
  (if en
    (progn
      (setq space (assoc 410 (entget en)))
      (while (and (setq en (entnext en)) (setq el (entget en)) (equal space (assoc 410 el)))
        (setq result (cons en result))
      )
    )
  )
  (reverse result)
)

Jetzt musst Du nur noch prüfen, ob in einer Blockdef ein INSERT vorkommt (oder eine Dimension, weil diese anonyme Blöcke sind). Hier werden sie als Liste in l-blockwithinsert gesammelt:

(setq l-blockwithinsert nil)
(foreach blockname (get-table-list "BLOCK")
  (foreach en (get-blockdef-entities blockname)
    (if (and (= "INSERT" (cdr (assoc 0 (entget en))))
            (not (member blockname l-blockwithinsert))
        )
      (setq l-blockwithinsert (cons blockname l-blockwithinsert))
    )
  )
)

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

Jörg
Mitglied
selbstständig


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

Beiträge: 104
Registriert: 24.07.2000

Bricscad V8

erstellt am: 15. Aug. 2022 07:38    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 Frank-WZB 10 Unities + Antwort hilfreich

Danke für Eure Hilfe!
Mein Problem ist gelöst.
Viele Grüße
Jörg


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