| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Mehrere DWG/DXF Einfügen? (5379 mal gelesen)
|
Kutscherq Mitglied Techniker
 Beiträge: 9 Registriert: 27.04.2004
|
erstellt am: 27. Apr. 2004 13:59 <-- editieren / zitieren --> Unities abgeben:         
Hallo, Wichtige Frage, ich müsste für eine gesamt übersicht mehrere DWG/DXF- (Format ist egal entweder oder) in eine Zeichnung einfügen. Habe es mit Xref und Block probiert aber es gelang mir nicht mehrere einzufügen, bei mir geht es darum ca 300 kleine dateien zu einer großen zusammenzufassen, nur wenn ich 300 dateien einzeln einfügen muss werde ich alt, die ca 300 dateien sind alle auf einen Nullpunkt referenziert. und die maus bekommt einen erhöhten verschleiss vom klicken. ALso wer mir tips geben kann bitte antworten danke wolfgang# Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proxy Ehrenmitglied Stateless-DHCP v6-Paketfragmentierer
    
 Beiträge: 1629 Registriert: 13.11.2003 Tastaturen, Mäuse, Pladden, Monitore, ...
|
erstellt am: 27. Apr. 2004 14:06 <-- editieren / zitieren --> Unities abgeben:          Nur für Kutscherq
Code:
(defun c:mi (/ list_file ;Liste der gewählten Dateien dwg_pfad ;Verzeichnis mit den Dateien activedwg ;Name der aktuellen DWG dwgname ;DWG-Name aus Liste idx_vorhanden idx_geladen flag_activedwg flag_islock ) (modes ;speichern der Systemvariablen '("CMDECHO" "OSMODE" "ATTREQ" ) )
(SETVAR "CMDECHO" 0) (COMMAND "_.UNDO" "_Begin") (SETVAR "OSMODE" 0) (setvar "ATTREQ" 0) ;Attribute nach Vorgabe übernehmen (SETQ old_err *error* ;setzen der internen Fehlerroutine *error* mi#err ) ;end-setq (princ "\nMultiInsert - mehrere Blöcke einfügen ... Bitte warten ... " )
(if (not (MI#DOSLIB)) (princ "Programmende, da keine DOSLIB gefunden !") (progn (if (not (setq list_file (dos_getfilem "Dateien wählen" "C:\\" "AutoCAD-Zeichnungen (*.dwg)|*.dwg| |" ) ) ;end-setq ) (princ "\nProgrammende, da keine DWG gewählt !") (progn (setq dwg_pfad (nth 0 list_file) activedwg (strcase (getvar "DWGNAME")) anzahl (1- (length list_file)) zaehler anzahl idx_vorhanden 0 idx_geladen 0 flag_activedwg nil ) (IF (> (LOGAND (CDR (ASSOC 70 (TBLSEARCH "LAYER" (getvar "clayer") ) ) ) 4 ) 0 ) (progn (command "_-layer" "_unlock" (getvar "clayer") "") (SETQ flag_islock T) ) ;end-progn (setq flag_islock nil) ) (while zaehler ; (PRINC "\r ") ; (PRINC zaehler) ; (PRINC " ")
(setq dwgname (nth zaehler list_file)) (if (= (strcase dwgname) activedwg) (progn (princ (strcat "\n" dwgname " nicht geladen - identisch mit aktueller Zeichnung !" ) ) (setq flag_activedwg T) ) ;end-progn
(progn (if (tblsearch "block" (substr dwgname 1 (- (strlen dwgname) 4) ) ;substr ) ;tblsearch (progn (princ (strcat "\n" dwgname " nicht geladen - bereits in vorhanden !" ) ) (setq idx_vorhanden (1+ idx_vorhanden)) ) ;end-progn (progn
(command "_-insert" (strcat dwg_pfad dwgname) (list 0 0 0) "" "" "" ) (entdel (entlast)) ;Löschen des Blockes (princ (strcat "\n" dwgname " geladen")) (setq idx_geladen (1+ idx_geladen)) ) ;end-progn - tblsearch ) ;endif - tblsearch ) ;end-progn - activedwg ) ;endif - activedwg (setq zaehler (- zaehler 1)) (if (= zaehler 0) (setq zaehler NIL) ) ) ;while zaehler (if flag_islock (command "_-layer" "_lock" (getvar "clayer") "") ) ;endif
(princ "\n\n\n\nMehrfach Blöcke einfügen - Ladestatistik:") (princ "\n--------------") (if flag_activedwg (princ "\nein Block war identisch mit Zeichnungsnamen !") ) ;endif (princ (strcat "\nAnzahl vorhandener Blöcke: " (itoa idx_vorhanden) ) ) (princ (strcat "\nAnzahl geladener Blöcke: " (itoa idx_geladen)) ) ) ;end-progn - dos_getfilem ) ;endif - dos_getfilem ) ;end-progn - doslib ) ;endif - doslib
(SETQ *error* old_err) (COMMAND "_.UNDO" "_End") (moder) (PRINC) ) (DEFUN moder () ; Rücksetzen der Systemvariablen - Unterprogramm (REPEAT (LENGTH mlst) (SETVAR (CAAR mlst) (CADAR mlst)) (SETQ mlst (CDR mlst)) ) )
(DEFUN modes (a) ;speichern der Systemvariablen (SETQ mlst '()) (REPEAT (LENGTH a) (SETQ mlst (APPEND mlst (LIST (LIST (CAR a) (GETVAR (CAR a)))))) (SETQ a (CDR a)) ) ) (DEFUN mi#err (s) ;interne Fehlerroutine (IF (/= s "Funktion abgebrochen") (PRINC (STRCAT "\nFehler: " s)) ) (if flag_islock (command "_-layer" "_lock" (getvar "clayer") "") ) ;endif (SETQ *error* old_err) (COMMAND "_.UNDO" "_End") (COMMAND "_u") (moder) (PRINC) ) (defun MI#DOSLIB ;Modul für die Installation der DOSLIB ;-#-#- (/ result ;Rückgabewert )
(cond ;; if DOSLib is already loaded, return true ((not (null DOS_ABOUT)) (setq result T) ) ;; if AutoCAD Release 14 ((= (atoi (substr (getvar "acadver") 1 2)) 14) (progn (setq result (arxload "doslib14" NIL)) (princ "\n\nDOSLib v4.4, (c)1992-99 Robert McNeel & Associates, www.mcneel.com\n" ) ) ;end-progn ) ;; if AutoCAD R2000 folgende ((= (atoi (substr (getvar "acadver") 1 2)) 15) (if (findfile "doslib601.arx") (progn (setq result (arxload "doslib6" NIL)) (princ "\n\nDOSLib v6, (c)1992-2002 Robert McNeel & Associates, www.mcneel.com\n" ) ) ;end-progn (progn (setq result (arxload "doslib2k" NIL)) (princ "\n\nDOSLib v5, (c)1992-2000 Robert McNeel & Associates, www.mcneel.com\n" ) ) ;end-progn ) ;endif ) ) ;end-cond (if (not result) (alert "Kann DosLib nicht initialisieren !") ) ;endif (setq result result) )
Brauchst dann noch die Dos-Lib. Am besten die 6.1 Version. ------------------ "Lisp?!?! Why the Hell did you pick the most arcane, obscure, and hopelessly-rooted-in-the-computer-science-department language in the world for an AutoCAD programming language?" Read the whole story: The Autodesk File ca. 890 Seiten | 7500 KB PDF Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kutscherq Mitglied Techniker
 Beiträge: 9 Registriert: 27.04.2004
|
erstellt am: 27. Apr. 2004 14:21 <-- editieren / zitieren --> Unities abgeben:         
|
Proxy Ehrenmitglied Stateless-DHCP v6-Paketfragmentierer
    
 Beiträge: 1629 Registriert: 13.11.2003 Tastaturen, Mäuse, Pladden, Monitore, ...
|
erstellt am: 27. Apr. 2004 14:52 <-- editieren / zitieren --> Unities abgeben:          Nur für Kutscherq
vlide eingeben [ENTER]  copy paste des Codes, save as, z.B. MI.LSP dann starten und MI in Fenster eingeben, nicht vergessen die Doslib-datei zu laden. P.S. Suchfunktion im Forum benutzen da haben schon Hunderte gefragt. Ein FAQ gibts glaube ich auch schon. ------------------ "Lisp?!?! Why the Hell did you pick the most arcane, obscure, and hopelessly-rooted-in-the-computer-science-department language in the world for an AutoCAD programming language?" Read the whole story: The Autodesk File ca. 890 Seiten | 7500 KB PDF Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kutscherq Mitglied Techniker
 Beiträge: 9 Registriert: 27.04.2004
|
erstellt am: 27. Apr. 2004 15:50 <-- editieren / zitieren --> Unities abgeben:         
Danke für die Hilfe jetzt habe ich noch ein Problem, wenn ich die Dateien einfüge , Testweise 20 ladet er alle die dwg datei ist dann ca 3 mb groß aber ich sehe nichts in der aktuellen dwg woran liegt das, danke im Vorraus Wolfgang Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 27. Apr. 2004 15:56 <-- editieren / zitieren --> Unities abgeben:          Nur für Kutscherq
|
Kutscherq Mitglied Techniker
 Beiträge: 9 Registriert: 27.04.2004
|
erstellt am: 27. Apr. 2004 16:02 <-- editieren / zitieren --> Unities abgeben:         
Danke, das heißt jetzt was, das er die Blockdefinitionen geladen hat, was bringt mir dann das lisp? Was nützen mir dann die 200 Blockdefinitionen ? Ich brauche etwas um ca 300 zeichnungen mit layer in eine zusammenzufügen ? Danke Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 27. Apr. 2004 16:06 <-- editieren / zitieren --> Unities abgeben:          Nur für Kutscherq
|
Kutscherq Mitglied Techniker
 Beiträge: 9 Registriert: 27.04.2004
|
erstellt am: 27. Apr. 2004 16:09 <-- editieren / zitieren --> Unities abgeben:         
|
csfalk Mitglied IT-Admin / CAD-Zeichner
 
 Beiträge: 204 Registriert: 14.06.2012 AutoCad Civil 3D 2020-20223 Autoturn Rehm Wasserwirtschaft Fluss Flussplot Cross Graps Hykas Kanalplot W10 x64
|
erstellt am: 22. Aug. 2013 10:30 <-- editieren / zitieren --> Unities abgeben:          Nur für Kutscherq
Hallo und vielen Dank für das tolle Lisp. Ich hätte da mal eine Frage. Leider habe ich jetzt noch eine kleines Problemchen und vielleicht könntest Du mir helfen. Wenn ich die dwg´s einfügen lasse, werden sie alle auf 0,0,0 eingefügt. Gibt es eine Möglichkeit, Dein Lisp so anzupassen, das die dwg´s alle um einen Abstand von 100 in x-Richtung eingefügt werden? also ich meine, die 1. dwg bei 0,100 und die 2. dwg bei 0,200 ? Ich hoffe ich konnte das jetzt erklären. Der Abstand 100 war jetzt nur ein Beispiel. Wenn Du mir helfen könntest, wäre es total SUUPPPEEERRR, da ich demnächst noch eine größere Anzahl an dwg´s habe. Vielen Dank für Deine Mühe und ganz lieben Dank für Dein Lisp. Grüße aus Berlin Ich hoffe meine Frage wird noch gelesen, da der Beitrag ja schon etwas älter ist. Trotzdem danke und LG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 22. Aug. 2013 11:04 <-- editieren / zitieren --> Unities abgeben:          Nur für Kutscherq
Und wenn das erledigt ist: Ich möchte die Anzahl pro Reihe bestimmen, wenn die Anzahl X erreicht ist, soll das Programm die nächste Reihe eröffnen. Und wenn das erledigt ist: Ich möchte noch bestimmen können ob die Referenzen mit dem Faktor 1 1 1 oder einem anderen festen Faktor, ODER skaliert auf eine bestimmte Größe (Quadrat mit Kantenlänge-Y) eingefügt werden soll. Und wenn das erledigt ist: Es wäre auch gut wenn man als Option hätte, den Datei(Block)Namen daneben schreiben zu lassen ! Ideen gibt es viele, ist auch nichts neues, bin aber mal gespannt wohin das hier hinführt  Zu deiner Anfrage: die Zeile (command "_-insert" (strcat dwg_pfad dwgname) (list 0 0 0) "" "" "" ) könnte gegen folgende Zeile ausgetauscht werden:
(list (* 100 IDX_VORHANDEN) 0 0) Habe es nicht getestet, müßte dafür ja extra DosLib installieren, könnte aber dennoch funktionieren ) Zitat: Ich hoffe meine Frage wird noch gelesen, da der Beitrag ja schon etwas älter ist. Trotzdem danke und LG
Mit der erneuten Antwort in dem Thread landet dieses Thema wieder "ganz oben" , schau mal hier: KLICK! - wieder ganz oben das Thema.. Willkommen auf CAD.de ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
csfalk Mitglied IT-Admin / CAD-Zeichner
 
 Beiträge: 204 Registriert: 14.06.2012 AutoCad Civil 3D 2020-20223 Autoturn Rehm Wasserwirtschaft Fluss Flussplot Cross Graps Hykas Kanalplot W10 x64
|
erstellt am: 22. Aug. 2013 11:12 <-- editieren / zitieren --> Unities abgeben:          Nur für Kutscherq
Vielen Dank für Deine Mühe und Zeit, hat aber leider nichts bewirkt. Werden alle wieder bei 0,0,0 eingefügt. Aber trotzdem vielen Dank. Und für Deinen köstlichen Humor. Wenigstens hast Du mich ein wenig zum schmunzeln gebracht. Und das kann ich heute wirklich gut gebrauchen. LG aus Berlin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 22. Aug. 2013 11:18 <-- editieren / zitieren --> Unities abgeben:          Nur für Kutscherq
|
csfalk Mitglied IT-Admin / CAD-Zeichner
 
 Beiträge: 204 Registriert: 14.06.2012 AutoCad Civil 3D 2020-20223 Autoturn Rehm Wasserwirtschaft Fluss Flussplot Cross Graps Hykas Kanalplot W10 x64
|
erstellt am: 22. Aug. 2013 11:32 <-- editieren / zitieren --> Unities abgeben:          Nur für Kutscherq
|
Balrok Mitglied Technischer Zeichner
 
 Beiträge: 428 Registriert: 02.06.2005 Win10, 64Bit AutoCad Architcture 2021 LiNear 2021 EPLAN P8
|
erstellt am: 12. Feb. 2015 09:43 <-- editieren / zitieren --> Unities abgeben:          Nur für Kutscherq
Hallo Profis, ich möchte dieses Thema nochmal aufgreifen. Ich habe mir das Prog mal geladen, leider kann ich DXF nicht auswählen. Auswahlmöglichkeiten: DWG (NICHTS) a Kauderwälsch Kauderwälsch Kann mir da einer helfen. Was muss ich bei der LISP ändern. Danke schon mal! Grüße Balrok
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
csfalk Mitglied IT-Admin / CAD-Zeichner
 
 Beiträge: 204 Registriert: 14.06.2012 AutoCad Civil 3D 2020-20223 Autoturn Rehm Wasserwirtschaft Fluss Flussplot Cross Graps Hykas Kanalplot W10 x64
|
erstellt am: 12. Feb. 2015 10:05 <-- editieren / zitieren --> Unities abgeben:          Nur für Kutscherq
Hallo, öffne die Lisp mit einem Editor und suche folgende Zeile. "AutoCAD-Zeichnungen (*.dwg)|*.dwg| |" Ersetze dwg durch dxf und Du kannst dann dxf-Dateien auswählen. Sieht dann so aus. "AutoCAD-Zeichnungen (*.dxf)|*.dxf| |" LG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Balrok Mitglied Technischer Zeichner
 
 Beiträge: 428 Registriert: 02.06.2005 Win10, 64Bit AutoCad Architcture 2021 LiNear 2021 EPLAN P8
|
erstellt am: 12. Feb. 2015 10:07 <-- editieren / zitieren --> Unities abgeben:          Nur für Kutscherq
|
csfalk Mitglied IT-Admin / CAD-Zeichner
 
 Beiträge: 204 Registriert: 14.06.2012 AutoCad Civil 3D 2020-20223 Autoturn Rehm Wasserwirtschaft Fluss Flussplot Cross Graps Hykas Kanalplot W10 x64
|
erstellt am: 12. Feb. 2015 10:09 <-- editieren / zitieren --> Unities abgeben:          Nur für Kutscherq
|
Balrok Mitglied Technischer Zeichner
 
 Beiträge: 428 Registriert: 02.06.2005 Win10, 64Bit AutoCad Architcture 2021 LiNear 2021 EPLAN P8
|
erstellt am: 12. Feb. 2015 10:24 <-- editieren / zitieren --> Unities abgeben:          Nur für Kutscherq
Supi!!! Hat funktioniert. Hatte mir sowas schon gedacht. Ich habe nur die Zeile aber ergänzt und das selbige nochmals hingeschrieben, allerdings dann DXF. Leider hat er meine Änderungen nicht übernommen. Aber so funktioniert das ja auch. LG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Goer Mitglied Arbeitsvorbereiter
 Beiträge: 3 Registriert: 29.08.2016
|
erstellt am: 29. Aug. 2016 21:54 <-- editieren / zitieren --> Unities abgeben:          Nur für Kutscherq
Hallo Proxy, Wollte fragen ob man das lsp noch erweitern könnte. Oder mir Tips geben könnte wie man das umschreiben könnte. Es wird bei uns eine feste folge der DWG verlangt. Erst 2 Din A0 Untereinandern und dan alle Einzelteile in dreierreihen untereinander. Ist das überhaupt möglich?? X X XXX XXX XXX XXX MFG Görlitz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 29. Aug. 2016 22:19 <-- editieren / zitieren --> Unities abgeben:          Nur für Kutscherq
Bin zwar nicht Proxy, aber ich antworte stellvertretend (schöner Wortwitz). Natürlich geht das, es geht fast alles. Aber es liegen nicht alle nötigen Informationen vor. Wo/was eingefügt werden soll, wie soll die Angabe und Sortierung erfolgen? Kann das Programm anhand der Dateinamen selbst entscheiden, wenn ja woran ist welche Position auslesbar? Oder soll es anhand der Reihenfolge der Dateiauswahl erfolgen? Wenn die Reihenfolge feststeht, so würde man dann den Programmablauf zum einfügen recht einfach gestalten können. Aber im Detail können auch hierbei Stolpersteine im Wege liegen, diese lassen ich der Einfachheit halber mal bei Seite. Beispiel: Datei1 einfügen bei 0,1000 - Datei2 bei 0,0 Die restlichen in zwei Schleifen absetzen: y -1000 x=0, nach absetzen x um 1000 erhöhen, nach 3 Dateien wieder von vorn. Y-Wert wieder um 1000 verringern, Datei einfügen, X-Wert um 1000 erhöhen, Datei einfügen, wieder X um 1000 erhöhen, Datei einfügen. X auf 0 Y um 1000 verringern. Und wieder von vorn. Neben vielen möglichen Fehlerquellen die es abzufangen gilt, würde man "eigentlich" auch noch die Größe ermittelt und darüber die beste Position berechnen zB. Und Zeitgleich Layouts oder wenigstens benannten Ansichten erstellen usw. Da du nach"oder Tips" gefragt hast: Hast du denn schon versucht selbst anzupassen? Falls ja, benenne doch deine konkretes Problem an dem du aktuell scheiterst und zeige den bisherigen Code. Editiert: Hatte Dreierreihe falsch geschrieben. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Goer Mitglied Arbeitsvorbereiter
 Beiträge: 3 Registriert: 29.08.2016
|
erstellt am: 29. Aug. 2016 22:31 <-- editieren / zitieren --> Unities abgeben:          Nur für Kutscherq
Danke für die schnelle Antwort. Die Größe steht fest die ersten zwei Din A0. Die anderen DIN A3. Also haben die ersten 2 einen festen Abstand. Und die anderen sollen 3 nebeneinander und fortlaufend nach unten. Den Abstand zu ändern hab ich schon. Die Reihenfolge ist auch gleich die Datei Reihenfolge wie im Orginal lsp.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Goer Mitglied Arbeitsvorbereiter
 Beiträge: 3 Registriert: 29.08.2016 Autocad 2009 Inventor 2012 Solidworks 2016
|
erstellt am: 30. Aug. 2016 17:59 <-- editieren / zitieren --> Unities abgeben:          Nur für Kutscherq
Beitrag ging gestern anscheinend nicht raus In der lsb Programmierung hab ich mich noch nie mit beschäftigt. Hab zwar ruhmprobiert mit den Positionen. Aber ich glaub es ist ein weniger aufwendiger. Mir würde das das ausreichen wen ich den festen Stand von der 1 Datei, der 2 Datei der 3 Datei usw. angeben könnte. Schreiben das dann für 50 Daten. In der Regel siehst immer so aus wie auf Bild. Wen das nicht mehr ausreicht bin ich bestimmt der Meinung das sich einer im Forum Bereitstellt gegen Bezahlung ein aufwendigeres LSB zu Schreiben 
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |