Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Block und Schraffuren auflösen, speichern unter

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:  Block und Schraffuren auflösen, speichern unter (268 mal gelesen)
nebuCADnezzar
Mitglied



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

Beiträge: 227
Registriert: 17.10.2007

AutoCAD 2019
Inventor 2019
64 bit Win 10
Intel I7 10610U 1.8 GHz
Quadro P520
32 GB Ram

erstellt am: 02. Nov. 2021 14:39    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 liebe Lispler

Alle Jahre wieder versuch ich mir mal wieder was zusammen zu bastelen. Hab das auch soweit wieder hinbkommen, nicht weil ich dass kann sondern mein Gefühl mir sagt dass könnt so klappen 

Funktioniert soweit bisher auch (vieln Dank an die Coder bei denen ich kopiert hab) aber ich bekomm das speichern unter nicht hin, ich hatte n sehr ähnliches Problem schonmal und hatte es wohl mit eurer Hilfe gelöst.

Das Programm löst erstmal alle Blöcke auf (sollte auch verschachtelte) um dann alle Schraffuren aufzulösen. Punktsil anpassen, zoom grenzen und dann die Datei im vordefinierten Pfad speichern und zwar bestehender Dateiname+Präfix (also natürlich Präfix+Dateiname) ich bekomm den Präfix aber nicht rein.

Und ich bin sicher das ist n Anfänger Grundlagen irgendwas was ich falsch gemacht hab und die Profis lachen sich n Ast 

Der Hund steckt meiner Meinung in den Untersten paar Zeilen (setq praefix ("werb-"))

Der Dateiname sollte dann sein "werb-XXXXXXXXX.dwg"


Gruss Robin

Code:
(defun C:werb (/ INDEX ONAME SGET WIE-OFT name DATNAME praefix pfad)
  (setq SGET (ssget "X" (list (cons 0 "INSERT")))) ;_ end setq
  (if (not SGET)
    (princ
      "\nKeine Blöcke in Zeichnung vorhanden, Funktionsende."
    ) ;_ end of princ
    (progn
      (initget 7)
      (setq WIE-OFT 10) ;(getint "\nWieviele Ebenen explodieren?"))
      (repeat WIE-OFT
        (setq SGET  (ssget "X" (list (cons 0 "INSERT")))
              INDEX 0
        ) ;_ end setq
        (if SGET
          (progn
            (while (< INDEX (sslength SGET))
              (setq ONAME (ssname SGET INDEX)) ;_ end setq
              (command "_.explode" ONAME)
              (setq INDEX (1+ INDEX))
            ) ;_ end of while
          ) ;_ end of progn
        ) ;_ end of if
      ) ;_ end of repeat
    ) ;_ end of progn
  ) ;_ end of if
  (princ)
;)

;(defun C:XXPLODESchraff (/ INDEX ONAME SGET WIE-OFT)
  (setq SGET (ssget "X" (list (cons 0 "HATCH")))) ;_ end setq
  (if (not SGET)
    (princ
      "\nKeine Schraffuren in Zeichnung vorhanden, Funktionsende."
    ) ;_ end of princ
    (progn
      (initget 7)
      (setq WIE-OFT 2) ;(getint "\nWieviele Ebenen explodieren?"))
      (repeat WIE-OFT
        (setq SGET  (ssget "X" (list (cons 0 "HATCH")))
              INDEX 0
        ) ;_ end setq
        (if SGET
          (progn
            (while (< INDEX (sslength SGET))
              (setq ONAME (ssname SGET INDEX)) ;_ end setq
              (command "_.explode" ONAME)
              (setq INDEX (1+ INDEX))
            ) ;_ end of while
          ) ;_ end of progn
        ) ;_ end of if
      ) ;_ end of repeat
    ) ;_ end of progn
  ) ;_ end of if
  (princ)
;)

;(defun C:speichernWERB (/ name DATNAME praefix pfad)

  (command "PDMODE" 1)
  (command "_zoom" "g")
  (setvar "FILEDIA" 0)
  (setq DATNAME (getvar "DWGNAME"))
  (setq praefix ("werb-"))
  (setq pfad ("U:\\CAD Services\\CAD_Daten\\AutoCAD_Vertrieb\\__Projekte\\Temp-werb"))
  (setq name (pfad prafeix DATNAME))
      (command "_SAVEAS" "2018" (car name))
  (setvar "FILEDIA" 1)
  (princ)
)


------------------
Es ist kein Zeichen geistiger Gesundheit, gut angepasst an eine zutiefst kranke Gesellschaft zu sein.

Jiddu Krishnamurti

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

System: F1
und Google

erstellt am: 02. Nov. 2021 15:39    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 nebuCADnezzar 10 Unities + Antwort hilfreich

  Den code der Reihenfolge nach abarbeiten, dann brauchst du dich schon mal nicht mehr fragen wo es knallt,
  dann ist es klar und eine Fehlermeldung von ACAD gibt es dann auch noch gratis dazu.
 
  ab hier schaute ich in den Code
  (setq DATNAME (getvar "DWGNAME")) ; enthält dann den Dateinamen+Endung
  läuft

  (setq praefix ("werb-")) ; ACAD fragt sich was die ihm unbekannt Funktion "werb-" wohl machen soll?
Schau doch mal was Acad antwortet wenn du das eingibst..

Befehl: (setq praefix ("werb-"))
; Fehler: Fehlerhafte Funktion: "werb-"


Richtig(er) wäre Befehl: (setq praefix "werb-")


  (setq pfad ("U:\\CAD Services\\CAD_Daten\\AutoCAD_Vertrieb\\__Projekte\\Temp-werb"))
Dasselbe Problem. Dein String ist keine Funktion, die Klammern drumherum gehören weg.

(setq name (pfad prafeix DATNAME))
Dasselbe Problem. Was auch immer hinter PFAD versteckt ist, ist keine Funktion, in diesem Fall fehlt hier wohl die Funktion STRCAT vor dem PFAD

(command "_SAVEAS" "2018" (car name))
car ist für den Zugriff auf Listen gedacht, nach meiner Hilfe hast du keine List und kannst auf CAR verzichten

Anmerkung: (command "_SAVEAS" "2018" name) wird später nur maximal 1x funktionieren, die Befehlsfolge
ändert sich falls es bereits eine Datei mit dem NAME, also Pfad+Dateiname+Erweitung gibt.

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

Maier2018
Mitglied
Schlaumaier


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

Beiträge: 15
Registriert: 15.01.2018

Autocad 2021

erstellt am: 02. Nov. 2021 15:55    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 nebuCADnezzar 10 Unities + Antwort hilfreich

Zitat:
(setq name (pfad prafeix DATNAME))

Wahrscheinlich muss es hier "praefix" heissen und würde zwischen "pfad" und "praefix" nicht noch ein "\\" fehlen für den vollständigen Pfad?

Am besten direkt schon in der Zeile inkludieren:

Code:
(setq pfad "U:\\CAD Services\\CAD_Daten\\AutoCAD_Vertrieb\\__Projekte\\Temp-werb\\")

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

nebuCADnezzar
Mitglied



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

Beiträge: 227
Registriert: 17.10.2007

AutoCAD 2019
Inventor 2019
64 bit Win 10
Intel I7 10610U 1.8 GHz
Quadro P520
32 GB Ram

erstellt am: 02. Nov. 2021 16:06    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

Vielen Dank

Hatte es gerade irgendwie geschafft das selbst zum rennen zu bringen! Danke für die Erklärung (da ich trie and error arbeite versteh ich manchmal nicht was ich gemacht hab aber es klappt (manchmal))
Hatte es mit und ohne Klammern versucht (setq praefix ("werb-")) aber das falsche car (command "_SAVEAS" "2018" (car name)) hat da scheinbar rein gestört und immer "Fehler: Fehlerhafte Funktion: "werb-"" geliefert.
Und den falschen car hatte ich mir halt auch aus einer meiner alten lisps rausgeklaut. Wer halt nich debuggen kann und auf gut glück testet... leider Programmier ich einfach zu wenig...

Ja und auch die Tippfehler und die fehlenden // vielen irgendwann auf :-)


Hier der tut, irgendwann braucht das vielleicht mal einer 

Code:

(defun C:werb (/ INDEX ONAME SGET WIE-OFT DATNAME praefix pfad)
  (setq SGET (ssget "X" (list (cons 0 "INSERT")))) ;_ end setq
  (if (not SGET)
    (princ
      "\nKeine Blöcke in Zeichnung vorhanden, Funktionsende."
    ) ;_ end of princ
    (progn
      (initget 7)
      (setq WIE-OFT 10) ;(getint "\nWieviele Ebenen explodieren?"))
      (repeat WIE-OFT
        (setq SGET  (ssget "X" (list (cons 0 "INSERT")))
              INDEX 0
        ) ;_ end setq
        (if SGET
          (progn
            (while (< INDEX (sslength SGET))
              (setq ONAME (ssname SGET INDEX)) ;_ end setq
              (command "_.explode" ONAME)
              (setq INDEX (1+ INDEX))
            ) ;_ end of while
          ) ;_ end of progn
        ) ;_ end of if
      ) ;_ end of repeat
    ) ;_ end of progn
  ) ;_ end of if
  (princ)
;)
;(defun C:XXPLODESchraff (/ INDEX ONAME SGET WIE-OFT)
  (setq SGET (ssget "X" (list (cons 0 "HATCH")))) ;_ end setq
  (if (not SGET)
    (princ
      "\nKeine Schraffuren in Zeichnung vorhanden, Funktionsende."
    ) ;_ end of princ
    (progn
      (initget 7)
      (setq WIE-OFT 2) ;(getint "\nWieviele Ebenen explodieren?"))
      (repeat WIE-OFT
        (setq SGET  (ssget "X" (list (cons 0 "HATCH")))
              INDEX 0
        ) ;_ end setq
        (if SGET
          (progn
            (while (< INDEX (sslength SGET))
              (setq ONAME (ssname SGET INDEX)) ;_ end setq
              (command "_.explode" ONAME)
              (setq INDEX (1+ INDEX))
            ) ;_ end of while
          ) ;_ end of progn
        ) ;_ end of if
      ) ;_ end of repeat
    ) ;_ end of progn
  ) ;_ end of if
  (princ)
;)

  (command "_.-PURGE" "_all" "*" "_n")
  (command "PDMODE" 1)
  (command "_zoom" "g")
  (setvar "FILEDIA" 0)
  (setq DATNAME (getvar "DWGNAME"))
  (setq praefix "gewünschterPräfix") ;Präfix
  (setq pfadneu "Pfadangabe")  ;Pfad
          (command "_SAVEAS" "2018" (strcat pfadneu praefix DATNAME))
  (setvar "FILEDIA" 1)
  (princ)
)


------------------
Es ist kein Zeichen geistiger Gesundheit, gut angepasst an eine zutiefst kranke Gesellschaft zu sein.

Jiddu Krishnamurti

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



Programmentwickler CAD & Office (m/w/divers)

thyssenkrupp ist eine international aufgestellte Unternehmensgruppe aus weitgehend selbstständigen Industrie- und Technologiegeschäften mit über 100.000 Mitarbeitenden. In 56 Ländern erwirtschaftete die Gruppe im Geschäftsjahr 2020/2021 einen Umsatz von 34 Mrd ?. Mit umfassendem Technologie-Know-how entwickeln die Geschäfte und alle Mitarbeitenden wirtschaftliche und ressourcenschonende ...

Anzeige ansehenSoftwareentwicklung
nebuCADnezzar
Mitglied



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

Beiträge: 227
Registriert: 17.10.2007

AutoCAD 2019
Inventor 2019
64 bit Win 10
Intel I7 10610U 1.8 GHz
Quadro P520
32 GB Ram

erstellt am: 02. Nov. 2021 16: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

Und ein Dank an

http://tutorial.autolisp.info/

Hat mir schon viel geholfen, ohne dass und dieses Forum wär ich schon oft mehr als aufgeschmissen gewesen!!


Schöne Grüsse

------------------
Es ist kein Zeichen geistiger Gesundheit, gut angepasst an eine zutiefst kranke Gesellschaft zu sein.

Jiddu Krishnamurti

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