| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: Mtext auslesen und als Dateinamen verwenden (2579 mal gelesen)
|
PAS81 Mitglied CNC-Programmierer, Arbeitsvorbereitung
Beiträge: 8 Registriert: 18.11.2007 Firma<P>Intel Core2 Duo CPU E8500@3,16GHZ 4GB Ram NVIDIA GeForce 9600 GT Windows 7 64 Bit-Betriebssystem AutoCAD 2007 Privat<P>Intel Core i5-2410M CPU @2,30GHz 8GB Ram NVIDIA GeForce GT540M Windows 7 64 Bit-Betriebssystem AutoCAD 2007/AutoCAD 2012
|
erstellt am: 04. Jan. 2012 11:19 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, ich habe mal ne Frage! Wir nutzen bei uns in der Firma eine Lisp zum DXF-Speichern. Sieht wie folgt aus! Code:
;---- Funktion um Zeichnung in DXF Version 2007 in Auftragsbezogenen-Ordner zu speichern ----(defun c:DXF_0001_Rohdecke () (setq objekte (ssget)) (setq Name (getfiled "DXF speichern unter" "F:\\Aufträge\\0001 Test 5501\\10CNC\\HOMAG\\02_MD\\D415_Owners_Cabin\\01_Rohdecken\\" "dxf" 1) ) (command "dxfout" Name "V" "2007" "O" objekte "" "") ) ;----Ende des Lisp Programmes----
In jedem Werkstück was wir anwählen und als DXF speichern wollen befindet sich ein Mtext der für uns auch als eine Fertigungsnummer steht, diese Nummer soll gleichzeitig unsere DXF und später auch WoodWOP Programmnummer sein. Ist es möglich den Text soweit auszulesen und ihn direkt bei der Speicherung der DXF als Dateinamen einzufügen! Ich füge mal eine JPG mit an, hoffe man sieht was ich meine! Wäre super wenn ihr mir helfen könntet! Danke Gruß Patrick Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 04. Jan. 2012 11:38 <-- editieren / zitieren --> Unities abgeben: Nur für PAS81
Hallo und willkommen! mit
Code: (vlax-get (vlax-ename->vla-object (car (entsel))) "textstring")
solltest du an den String kommen, vorher nicht vergessen
Code: (VL-LOAD-COM)
ggf. mit strcat noch alles neu zusammenbauen ------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PAS81 Mitglied CNC-Programmierer, Arbeitsvorbereitung
Beiträge: 8 Registriert: 18.11.2007 Firma<P>Intel Core2 Duo CPU E8500@3,16GHZ 4GB Ram NVIDIA GeForce 9600 GT Windows 7 64 Bit-Betriebssystem AutoCAD 2007 Privat<P>Intel Core i5-2410M CPU @2,30GHz 8GB Ram NVIDIA GeForce GT540M Windows 7 64 Bit-Betriebssystem AutoCAD 2007/AutoCAD 2012
|
erstellt am: 04. Jan. 2012 11:49 <-- editieren / zitieren --> Unities abgeben:
Besten Dank schon mal für deinen Beitrag! Ich habe leider von der Lisp Programmierung nicht wirklich viel Ahnung, der Code war vorhanden und ich dachte das man den vielleicht ein wenig tunen kann um unsere Fehlerquote und Zeitaufwand beim eingeben zu verringern! Wie muss ich deinen Code mit dem vorhandenen kombinieren das es funktioniert! Gruß Patrick Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 04. Jan. 2012 12:25 <-- editieren / zitieren --> Unities abgeben: Nur für PAS81
ungetestet Code:
;---- Funktion um Zeichnung in DXF Version 2007 in Auftragsbezogenen-Ordner zu speichern ---- (defun c:DXF_0001_Rohdecke () (setq objekte (ssget)) ;;;geändert start (setq Name (strcat "F:\\Aufträge\\0001 Test 5501\\10CNC\\HOMAG\\02_MD\\D415_Owners_Cabin\\01_Rohdecken\\" (vlax-get (vlax-ename->vla-object (car (entsel))) "textstring" ) ".dxf" ) ) ;;;ende (command "dxfout" Name "V" "2007" "O" objekte "" "") );----Ende des Lisp Programmes----
dein Pfad ist fest "verdrahtet", keine Fehlerabfrage vorhanden, Formatierungszeichen im String möglich bei mehr solltest du jemanden aufsuchen, der dies programmiert, "um unsere Fehlerquote und Zeitaufwand beim eingeben zu verringern" sollte schon ein paar Taler wert sein!? nein - ich biete solche Dienstleistungen nicht an
------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 04. Jan. 2012 12:56 <-- editieren / zitieren --> Unities abgeben: Nur für PAS81
Ich stimme meinem Vorschreiber zu 100% zu und verringere die Fehlerquote im Programm (hoffentlich) wie folgt: Code: (defun c:DXF_0001_Rohdecke ( / objekte text Name) ;angepasst 120104 Dateiname => http://ww3.cad.de/foren/ubb/Forum145/HTML/003572.shtml#000004 (if (and (setq objekte (ssget)) (setq text (if (setq text (car(nentsel "\nTextobjekt für Dateinamenvorschlag wählen: ")))(setq text (cdr(assoc 1 (entget text))))) Name (getfiled "Export speichern unter: " (strcat (getvar "DWGPREFIX")(if text (strcat text ".dxf") "")) "dxf" 1) ) ) (command "dxfout" Name "V" "2007" "O" objekte "" "") ) (princ) )
Sorry Dorfy, konnte es nicht wieder wegwerfen ------------------ CAD.de System-Angaben - CAD on demand - User:FAQ(Acad) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PAS81 Mitglied CNC-Programmierer, Arbeitsvorbereitung
Beiträge: 8 Registriert: 18.11.2007 Firma<P>Intel Core2 Duo CPU E8500@3,16GHZ 4GB Ram NVIDIA GeForce 9600 GT Windows 7 64 Bit-Betriebssystem AutoCAD 2007 Privat<P>Intel Core i5-2410M CPU @2,30GHz 8GB Ram NVIDIA GeForce GT540M Windows 7 64 Bit-Betriebssystem AutoCAD 2007/AutoCAD 2012
|
erstellt am: 04. Jan. 2012 13:33 <-- editieren / zitieren --> Unities abgeben:
|
-ikarus- Mitglied Zeichner
Beiträge: 142 Registriert: 12.02.2007 ACAD 2015,PSP 2011, Showcase 2015, Mudbox 2015 Indesign CC, Illustrator CC, Photoshop CC, After Effects CC, Premiere Pro CC, Edge Animate CC, Acrobat DC Pro mit PitStop Pro, Visual Studio 2013 Notepad++ Rechner: HP Z620 Workstation NVIDIA Quadro K4000
|
erstellt am: 06. Feb. 2013 22:23 <-- editieren / zitieren --> Unities abgeben: Nur für PAS81
Hallo Leute, hab da mal eine Frage zu der Lisp Code:
(defun c:DXF_0001_Rohdecke ( / objekte text Name) ;angepasst 120104 Dateiname => http://ww3.cad.de/foren/ubb/Forum145/HTML/003572.shtml#000004 (if (and (setq objekte (ssget)) (setq text (if (setq text (car(nentsel "\nTextobjekt für Dateinamenvorschlag wählen: ")))(setq text (cdr(assoc 1 (entget text))))) Name (getfiled "Export speichern unter: " (strcat (getvar "DWGPREFIX")(if text (strcat text ".dxf") "")) "dxf" 1) ) ) (command "dxfout" Name "V" "2007" "O" objekte "" "") ) (princ) )
Ich verwende diese, danke cadffm für die Lisp. Jetzt die Frage, der Code: (setq text (car(nentsel "\nTextobjekt für Dateinamenvorschlag wählen: "))) wie kann man den änder, so das ein Text ausgelesen wird, der immer an der gleichen stelle steht z.B. GC (10 0 -50 0)? Ich hab das mit (ssegt ' (-50 0)) Probiert kommt immer fehlerhaftes Argument. Und auch mit (ssget "_X" '((0 . "TEXT")(10 0 -50 0)) kommt auch fehler. Danke für euere Hilfe. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 07. Feb. 2013 01:00 <-- editieren / zitieren --> Unities abgeben: Nur für PAS81
Zitat: Original erstellt von -ikarus-: ..auch mit (ssget "_X" '((0 . "TEXT")(10 0 -50 0)) kommt auch fehler.
Diese Zeile ist technisch korrekt, aber man kann es nicht 1:1 tauschen im Programm. Zitat:
(defun c:DXF_0001_Rohdecke ( / objekte text Name) (if (and (setq objekte (ssget)) (setq text (if (setq text (ssget "_X" '((0 . "*TEXT")(10 0 -50 0)))) (setq text (cdr(assoc 1 (entget (ssname text 0))))) ) Name (getfiled "Export speichern unter: " (strcat (getvar "DWGPREFIX")(if text (strcat text ".dxf") "")) "dxf" 1) ) ) (command "dxfout" Name "V" "2007" "O" objekte "" "") ) (princ) )
------------------ Link: User:FAQ (einiges Wissenswertes über AutoCAD) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
-ikarus- Mitglied Zeichner
Beiträge: 142 Registriert: 12.02.2007 ACAD 2015,PSP 2011, Showcase 2015, Mudbox 2015 Indesign CC, Illustrator CC, Photoshop CC, After Effects CC, Premiere Pro CC, Edge Animate CC, Acrobat DC Pro mit PitStop Pro, Visual Studio 2013 Notepad++ Rechner: HP Z620 Workstation NVIDIA Quadro K4000
|
erstellt am: 07. Feb. 2013 11:14 <-- editieren / zitieren --> Unities abgeben: Nur für PAS81
|
WNJT Mitglied
Beiträge: 14 Registriert: 12.04.2023 AutoCad 2020
|
erstellt am: 17. Sep. 2023 22:40 <-- editieren / zitieren --> Unities abgeben: Nur für PAS81
ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist! Hallo, ich habe die Lisp von oben überarbeitet, so dass mehr oder weniger alles automatisch ausgewählt wird. Es wird dann auch ein neuer Orner erstellt, in dem theoretisch die Datei gespeichert werden soll. Nur öffnet es mir immer im DXFOUT Dialogfenster den Pfad in dem meine Zeichnung liegt. Kann mir jemand weiterhelfen, an welcher Stelle ich den "neuen" Pfad vorgeben müsste? Ich habe schon an allen möglichen Positionen versuche gestartet, bekomme es einfach nicht hin. (defun c XF9 ( / objekte text Name) ;angepasst 120104 Dateiname => http://ww3.cad.de/foren/ubb/Forum145/HTML/003572.shtml#000004 (if (and (setq objekte (ssget "_X" '((0 . "line,arc")(8 . "Laserlayer_Schrift,Laserlayer_6_2")))) (setq text (if (setq text (ssget "_X" '((0 . "*TEXT")))) (setq text (cdr(assoc 1 (entget (ssname text 0))))) ) ) (setq Baugruppe (substr text 1 15)) (setq testpfad (strcat "C:\\TEST\\" Baugruppe "\\")) (vl-mkdir testpfad) ;neuer Ordner mit den ersten 15 Zeichen des ausgewaehlen textes wird erstellt (setq Name (getfiled "Export speichern unter: " (strcat (getvar "DWGPREFIX")(if text (strcat text ".dxf") "")) "dxf" 1) ) ) (command "dxfout" Name "V" "2007" "O" objekte "" "") ) (princ) ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1989 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 17. Sep. 2023 23:05 <-- editieren / zitieren --> Unities abgeben: Nur für PAS81
getfiled öffnet einen Dialog. Wenn bei dxfout der Dateiname richtig geschrieben ist und existiert dann wird dort auch gespeichert. Lass mal diese Zeile weg (setq Name (getfiled "Export speichern unter: " (strcat (getvar "DWGPREFIX")(if text (strcat text ".dxf") "")) "dxf" 1) und ersetze die durch (setq Name(if text (strcat text ".dxf") "dummy.dxf")) ------------------ Gruß CADwiesel Besucht uns im CHAT
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WNJT Mitglied
Beiträge: 14 Registriert: 12.04.2023 AutoCad 2020
|
erstellt am: 18. Sep. 2023 08:34 <-- editieren / zitieren --> Unities abgeben: Nur für PAS81
alles klar, vielen Dank! Das werde ich heute Abend gleich mal ausprobieren. bin gestern noch auf ein größeres Problem gestoßen, das ich erst mal zu lösen versuche. ich habe viele Teile die in unterschiedliche Ordner abspeichert werden müssen, allerdings auch mehrere in ein und den selben Ordner. Somit kann es natürlich keinen Ordner erstellen, wenn dieser schon vorhanden ist. Hier werde ich mich mal in die Befehlswelt von if not usw. einlesen.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WNJT Mitglied
Beiträge: 14 Registriert: 12.04.2023 AutoCad 2020
|
erstellt am: 18. Sep. 2023 19:13 <-- editieren / zitieren --> Unities abgeben: Nur für PAS81
nochmal vielen Dank Cadwiesel, meit deiner Hilfe habe ich es hinbekommen. Bei dem andren Problem komme ich einfach nicht weiter, hat hier noch jemand einen Tip? hier mein Versuch, dass der Pfad nicht erzeugt wird, wenn er schon vorhanden ist. Ich bekomme immer den Fehler: zu viele Argumente... (defun C:ABSP6 () (vl-load-com) (setq text (if (setq text (ssget "_X" '((0 . "*TEXT")))) (setq text (cdr(assoc 1 (entget (ssname text 0))))) ) ) (setq Baugruppe (substr text 1 15)) (if (not (findfile "c:/TEST/"Baugruppe"/.") ) (setq testpfad (strcat "C:\\TEST\\" Baugruppe "\\" )) (vl-mkdir testpfad)) ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 18. Sep. 2023 22:38 <-- editieren / zitieren --> Unities abgeben: Nur für PAS81
|
WNJT Mitglied
Beiträge: 14 Registriert: 12.04.2023 AutoCad 2020
|
erstellt am: 19. Sep. 2023 11:12 <-- editieren / zitieren --> Unities abgeben: Nur für PAS81
|