Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  DXF-EXPORTIEREN

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:  DXF-EXPORTIEREN (1325 mal gelesen)
udouk
Mitglied



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

Beiträge: 13
Registriert: 26.08.2009

Win XP SP3
ACAD 2007

erstellt am: 26. Aug. 2009 13:56    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 Leute,

ich hoffe hier jemanden zu finden, der mir eventuell helfen kann.

Ich habe eine Zeichnung mit vielen Elementen und möchte nun einige auswählen, kopieren und diese als dxf speichern, wobei ich wärend des speicherns den neuen Nullpunkt der DXF-Datei auswälen möchte, damit z.B. die Ecke eines Rechteckes in der neuen DXF-Datei auf 0,0,0 liegt.

Leider sind meine Lisp-Kentnisse als sehr mäßig zu bezeichnen und darum hab ich schon mal versucht, eine fertige Copieren und dann Drehen Datei umzuscheiben - Hat auch fast geklappt - Haut aber leider am Ende immer eine Fehlermeldung raus.
Eventuell hat ja hier jemand etwas passendes für mich?

MFG
Udouk

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: 26. Aug. 2009 14:36    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 udouk 10 Unities + Antwort hilfreich

Hallo,

ich würde folgenden Weg vorschlagen:
1) Block aus den Elementen bilden, mit dem entsprechenden Neuen Basispunkt
2) WBlock - den eben erstellten Block als DXF rausschreiben
-fertig-

Dass müsste mit den BefehlszeilenVersionen der Befehle funktionieren.
Wo hakt es bei dir?

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.

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

udouk
Mitglied



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

Beiträge: 13
Registriert: 26.08.2009

Win XP SP3
ACAD 2007

erstellt am: 26. Aug. 2009 15:00    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 die superschnelle Antwort!!!

Also, mein Versuch eine Vorhandene Kopieren & Drehen LISP-Datei umzuschreiben sieht nun so aus:

_________________________________________________________________________
(VL-LOAD-COM)
(defun C XF-EX (/ SGET)
(princ "\nObjekte zum Exportieren wählen: ")
(if (setq SGET (ssget))
(DXF-EX SGET)
)
(princ)
)


(defun DXF-EX (AUSWAHL / LST-ORGOBJECTS P SSET-COPIED)
(if (setq LST-ORGOBJECTS (DT:SELSET->VLA-OBJECTLIST AUSWAHL))
(while (setq P (DT:SAFE-EVAL
(list 'getpoint
"\nNullpunkt wählen: "
)
)
)
(if (setq SSET-COPIED (DT:COPY-OBJECTS LST-ORGOBJECTS))
(if (setq SSET-COPIED (DT:OBJECTLIST->SELSET SSET-COPIED))
(progn
(DT:SAFE-EVAL
  (setq
    Name (getfiled "DXF speichern unter" "C:\\Dokumente und Einstellungen\\ukr\\Favoriten\\" "dxf" 1)
  )
(VL-CMDF "_.move" SSET-COPIED "" P "0,0,0" "_.dxfout" Name "V" "R12" "O" SSET-COPIED "" "" "_.erase" SSET-COPIED "")
)
(princ "\n...DXF-Exportiert ")
)
)
)
)
)
)


(defun DT:COPY-OBJECTS (LST-OBJECTS / ARRAY-OF-OBJECTS)
(if (setq LST-OBJECTS (mapcar '->VLA-OBJECT LST-OBJECTS))
(if (setq ARRAY-OF-OBJECTS
(vla-copyobjects
(vla-get-activedocument
(vlax-get-acad-object)
)
(DT:OBJLIST->ARRAY LST-OBJECTS)
)
)
(DT:ARRAY->LST ARRAY-OF-OBJECTS)
)
)
)


(defun DT:ARRAY->LST (ARRAY /)
(DT:SAFE-EVAL
(list 'vlax-safearray->list
(DT:SAFE-EVAL (list 'vlax-variant-value ARRAY))
)
)
)


(defun DT:OBJLIST->ARRAY (LST-OBJECTS)
(if (setq LST-OBJECTS (mapcar '->VLA-OBJECT LST-OBJECTS))
(vlax-safearray-fill
(vlax-make-safearray
vlax-vbobject
(cons 0 (1- (length LST-OBJECTS)))
)
LST-OBJECTS
)
)
)

;; Funktion zum sicheren Ausführen von Code
;; Beispiel:
;; Normaler Aufruf:
;; (setq value (MS_multiList "Titel" "Aufforderung" '("C" "F") '("A" "B" "C" "D" "E" "F" "G")))
;; Safe Aufruf:
;; (setq retval (MS:SAFE-EVAL '(MS_multiList "Titel" "Aufforderung" ("C" "F") ("A" "B" "C" "D" "E" "F" "G"))))
;; oder
;; (setq retval (MS:SAFE-EVAL (list 'MS_multiList "Titel" "Aufforderung" '("C" "F") '("A" "B" "C" "D" "E" "F" "G"))))
(defun DT:SAFE-EVAL (EVALFUNCTION / ARGLST FUNCNAME RETVAL)
(if EVALFUNCTION
(if (setq FUNCNAME (car EVALFUNCTION))
(progn
(setq ARGLST (cdr EVALFUNCTION))

(if (vl-catch-all-error-p
(setq RETVAL (vl-catch-all-apply FUNCNAME ARGLST))
) ;_ end of vl-catch-all-error-p
(setq RETVAL NIL)
) ;_ end of if
) ;_ end of progn
) ;_ end of if
) ;_ end of if
RETVAL
) ;_ end of defun

;;; z.B. (DT:SELSET-LIKE-DEFINITION (list (cons 0 "IMAGE")(cons 8 "*$BILD$@*")))
(defun DT:SELSET->ENAMELIST (SELSET / INDEX RETVAL)
(if (eq (type SELSET) 'PICKSET)
(progn
(setq INDEX 0)
(repeat (sslength SELSET)
(setq RETVAL (cons (ssname SELSET INDEX) RETVAL)
INDEX (1+ INDEX)
) ;_ end of setq
) ;_ end of repeat
) ;_ end of progn
) ;_ end of if
retval
) ;_ end of defun

(defun DT:SELSET->VLA-OBJECTLIST (SELSET / RETVAL)
(if (eq (type SELSET) 'PICKSET)
(if (setq RETVAL (DT:SELSET->ENAMELIST SELSET))
(setq RETVAL
(mapcar (function (lambda (X) (->VLA-OBJECT X))) RETVAL)
) ;_ end of setq
) ;_ end of if
) ;_ end of if
RETVAL
) ;_ end of defun

(defun DT:OBJECTLIST->SELSET (OBJECTLIST / SGET)
(gc)
(if (setq OBJECTLIST
(vl-remove-if
'null
(mapcar (function (lambda (X) (->ENAME X)))
OBJECTLIST
)
)
)
(progn
(setq SGET (ssadd))
(foreach ELEM OBJECTLIST
(setq SGET (ssadd ELEM SGET))
)
)
)
(if SGET
(if (> (sslength SGET) 0)
SGET
)
)
)

;;; Funktion gibt Ename zurück, wenn Lisp-Objekt oder vla-Objekt
;;; übergeben worden sind. Ansonsten nil
(defun ->ENAME (ENAME /)
(cond
((= (type ENAME) 'VLA-OBJECT) (vlax-vla-object->ename ENAME))
((= (type ENAME) 'ENAME) ENAME)
(t NIL)
) ;_ end of cond
) ;_ end of defun

;;; Funktion gibt vla-Objekt zurück, wenn Lisp-Objekt oder vla-Objekt
;;; übergeben worden sind. Ansonsten nil
(defun ->VLA-OBJECT (ENAME /)
(cond
((= (type ENAME) 'ENAME) (vlax-ename->vla-object ENAME))
((= (type ENAME) 'VLA-OBJECT) ENAME)
(t NIL)
) ;_ end of cond
) ;_ end of defun

(princ "\nDXF-Export von U.K. geladen. Aufruf mit \"DXF-EX\".")
(princ)
_______________________________________________________________________

Wie schon gesagt, es läuft, gibt aber am Ende eine Fehlermeldun über zuviele Argumente raus - liegt vermutlich an der ursprünglichen Wiederholfunktion aus der Ur-Datei - Aber wie schon geschrieben - Ich bin mit LISP nicht so super vertraut.

Bei dem Weg über den Block, hab ich dann im Original ja nachher ganz viele neue Blöcke - Eigendlich wollte ich die Originalzeichnung nicht verändern.

MFG
Udouk

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: 26. Aug. 2009 15: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 udouk 10 Unities + Antwort hilfreich

Wieviel Code ist denn da original von dir ... ?

------------------
  - Thomas -
"Bei 99% aller Probleme 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

udouk
Mitglied



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

Beiträge: 13
Registriert: 26.08.2009

Win XP SP3
ACAD 2007

erstellt am: 26. Aug. 2009 15: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

Wie Dir schon aufgefallen ist, nicht sehr viel, hab eigendlich nur einige Befehle ausgetauscht und den Aufruf umbenannt.

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

Hunchback
Mitglied
CAD-Tech


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

Beiträge: 63
Registriert: 10.10.2007

Win2K
AutoCAD 2007

erstellt am: 26. Aug. 2009 15:50    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 udouk 10 Unities + Antwort hilfreich

wenn schon copy/paste, dann aber richtig  Versuch mal
Code:
(DT:SAFE-EVAL
  (setq
    Name (getfiled "DXF speichern unter" "C:\\Dokumente und Einstellungen\\ukr\\Favoriten\\" "dxf" 1)
  )

durch
Code:
(setq
Name
(DT:SAFE-EVAL (list 'getfiled
  "DXF speichern unter"
  "C:\\Dokumente und Einstellungen\\ukr\\Favoriten\\"
  "dxf"
  1
)
  )
      )

zu ersetzen.

(nicht getestet)

grüße

Martin

------------------
You seem (in my (humble) opinion (which doesn't mean much)) to be (or possibly could be) more of a Lisp programmer (but I could be (and probably am) wrong).

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 27. Aug. 2009 08:46    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 udouk 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von CADmium:
  Wieviel Code ist denn da original von dir ... ?



lol, interessant wäre auch, aus welcher ursprünglichen Funktion das übernommen wurde...

------------------
Ciao,
Marc

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

udouk
Mitglied



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

Beiträge: 13
Registriert: 26.08.2009

Win XP SP3
ACAD 2007

erstellt am: 27. Aug. 2009 10:24    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

Lacht ruhig 

Wie schon gesagt, es erfüllt seine Funktion - bis auf die Fehlermeldung (zu Viele Argumente) am Ende, die ich gerne weg hätte.


@ marc.scherer
Der Originalcode ist sogar von Dir (der Aufruf war cr) Kopieren und Drehen halt 

MFG
Udouk

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

udouk
Mitglied



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

Beiträge: 13
Registriert: 26.08.2009

Win XP SP3
ACAD 2007

erstellt am: 27. Aug. 2009 11:33    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

MIST, 

jetzt hat die Fehlermeldung in einer Zeichnung zur Folge, das ein UNDO aufgerufen und ausgeführt wird.
Die Arbeit der Letzten 10 Minuten war dann wech!!
Hab ich vorher noch nicht gehabt - Woran kann das denn nun liegen?
Macht er in dieser Zeichnung immer!?

MFG
Udo

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


Ex-Mitglied

erstellt am: 27. Aug. 2009 11:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Udo,
Zitat:
...das ein UNDO aufgerufen und ausgeführt wird. Die Arbeit der Letzten 10 Minuten war dann wech!!
Du weisst aber schon, dass es ein '_redo' gibt? Würde zumindest schneller als 10min gehen.

- alfred -

------------------
www.hollaus.at

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 27. Aug. 2009 12: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 Nur für udouk 10 Unities + Antwort hilfreich

 
Zitat:
Original erstellt von udouk:
Hab ich vorher noch nicht gehabt - Woran kann das denn nun liegen?
Macht er in dieser Zeichnung immer!?

 

Zitat:
Original erstellt von udouk:

Wie schon gesagt, es erfüllt seine Funktion - bis auf die Fehlermeldung (zu Viele Argumente) am Ende, die ich gerne weg hätte.

Wenn Du Deinen aktuellen Code mal als Anhang hier postest, können wir Dir vielleicht sagen woran es hakt. Du könntest natürlich auch einfach die VLIDE dafür benutzen dem Fehler auf die Schliche zu kommen (Stichwort: Debugging).

 

Zitat:
Original erstellt von udouk:
@ marc.scherer
Der Originalcode ist sogar von Dir (der Aufruf war cr) Kopieren und Drehen halt  


Na das der Code von mir war, hab' ich schon erkannt. Nur zu welcher Funktion der genau gehörte :achselzuck

------------------
Ciao,
Marc
   

[Diese Nachricht wurde von marc.scherer am 27. Aug. 2009 editiert.]

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