Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  DWGs mit LISP als Block laden

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
Autor Thema:   DWGs mit LISP als Block laden (4577 mal gelesen)
s.wickel
Mitglied
Bauingenieur Wasserwirtschaft


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

Beiträge: 421
Registriert: 17.12.2001

Bricscad V7 - V11

erstellt am: 15. Mai. 2002 14:20    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!

Ich habe schon vor einiger Zeit ein Lispprogramm geschrieben, mit dem man Koordinaten aus einer ASCII-Datei einlesen kann. Dann wird an jede Koordinate ein Block oder ein Punkt gezeichnet (ich weiß, so was gibt es massenweise, aber kein Programm ist genau so wie ich es will).

Mein Problem:
Das Programm soll anhand einer Punktkennung eine bestimmte DWG als Block verwenden. Dazu muss ich es erst einmal hin kriegen, mit LISP eine DWG als Block zu laden. Wenn es geht nicht mit (command "_insert" ....).
Dann muss ich auch feststellen können, ob der Block schon in der Zeichnung existiert. Sonst könnte ich einen vorhandenen Block gleichen Namens zerstören.

Irgenwie geht's, dass weiß ich. Eventuell mit VLISP. Aber da bin ich nicht firm!

Wer kann's besser als ich???

------------------
Nodda,

Stefan 

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: 1911
Registriert: 05.09.2000

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

erstellt am: 16. Mai. 2002 07: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 Nur für s.wickel 10 Unities + Antwort hilfreich

mit tblsearch kannst Du sehr einfach feststellen, ob ein Block Deines Namens schon existiert.
...und wiso willst Du nicht den Command Befehl für die Insert's benutzen?

------------------
Gruß
CADwiesel

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

s.wickel
Mitglied
Bauingenieur Wasserwirtschaft


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

Beiträge: 421
Registriert: 17.12.2001

erstellt am: 16. Mai. 2002 11: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

Hallo Cadwiesel!

Danke für die Auskunft. Ich probiers gleich aus, wenn ich Zeit habe.

Ich versuche zur Zeit alle Aufrufe von (command ...) zu umgehen. Das macht das Programmieren zwar etwas schwerer, aber die Programme wesentlich schneller. Das Programm an dem ich arbeite erzeugt für jede Koordinate die eingelesen wird einen Block und einen Text der die Höhe über NN (über dem Meer) enthält. Mit (command "_point"...) und (command "_text" ...) dauert es ewig, bis 1000 Punkte eingelesen sind. Mit (entmake ...) geht's viel besser.
Aber um einen einmaligen Aufruf von _insert komme ich wohl nicht drum rum (danach ist der Block ja vorhanden).

------------------
Nodda,

Stefan 

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

Brischke
Ehrenmitglied V.I.P. h.c.
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: 4136
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 16. Mai. 2002 12:53    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 s.wickel 10 Unities + Antwort hilfreich

Hallo Stefan,

wenn der Block immer gleich aussehen soll, dann kann man diesen ja auch im Programm mit entmake erzeugen. Dann brauchst Du kein Insert mehr.
Dem Block gleich noch ein Attribut anhängen und du kannst an jeden Punkt diesen Block mit dem gewünschten Text plazieren.

Grüße

Holger

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

s.wickel
Mitglied
Bauingenieur Wasserwirtschaft


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

Beiträge: 421
Registriert: 17.12.2001

erstellt am: 16. Mai. 2002 13:16    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 Holger!

Klar, da hast du recht. Aber dann müsste ich die Blockdefinitionen erst ermitteln und dann in das Lisp übernehmen. Das wäre ein sehr umfangreicher Quellcode. Außerdem müsst ich für jeden neuen Block das Lisp wieder ändern. Das ist zu Aufwändig. Dann lieber _insert.

Aber Danke!

------------------
Nodda,

Stefan 

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

Brischke
Ehrenmitglied V.I.P. h.c.
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: 4136
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 16. Mai. 2002 13: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 s.wickel 10 Unities + Antwort hilfreich

Hallo Stefan,

die Frage ist, wie kompliziert bzw. aus wievielen Elementen die Blöcke bestehen. Zur Not kann man sich auch ein kleines Tool schreiben, welches einem das Schreiben der Blockdefinition abnimmt.
Nachteil oder auch Vorteil ist: andere können nicht die Blöcke verpfuschen.
Den Lisp-Code brauchst du nicht zu ändern, wenn du die Blockdefinitionen in eigenen Konfig-dateien speicherst. entsprechend der Konstellation im Programm wird genau wie beim Einfügen dann eben der eine oder der andere Block geladen (nicht per "command" eingefügt!).

Bei Fragen ...

Holger

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

nahe
Ehrenmitglied



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

Beiträge: 1540
Registriert: 18.01.2001

erstellt am: 17. Mai. 2002 08: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 s.wickel 10 Unities + Antwort hilfreich

Hallo s.wickel

Wie ist denn Dein Programm aufgebaut?
Durchläufst Du eine Schleife und fügst bei jedem Durchlauf die Punkte und Blöcke ein?
Wenn ja, dann versuch mal folgendes:
Beim Durchlaufen der Schleife eine Liste erstellen die den Punkt und den Block einfügt und erst nach dem Schleifenende die Liste ausführen lassen.
Ich hab auch mal ein Programm zum Einlesen von Koordinaten geschrieben und die Lösung zuerst die Liste zu erstellen und diese danach auszuführen war deutlich schneller. Der Vorteil dabei ist, dass Du nur einen command Aufruf brauchst.
Die Liste könnte in etwa so aufgebaut werden:
(setq cmdl '(command))
solange koordianten gelsen werden
  (setq cmdl (cons "_point" cmdl))
  (setq cmdl (cons (strcat x "," y) cmdl))
schleifenende
(setq cmdl (reverse cmdl))
(eval cmdl)

Grüße
Heinz

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

Brischke
Ehrenmitglied V.I.P. h.c.
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: 4136
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 22. Mai. 2002 11:31    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 s.wickel 10 Unities + Antwort hilfreich


Blockdef_forLOAD.zip

 
Hallo Stefan,

da ich es selber auch gut brauchen kann, habe ich mich mal damit beschäftigt, die Blöcke ohne (command "_.insert" ...) in die Zeichnung zu holen. Die von mir vorgeschlagene Variante scheitert ja nur an der Tatsache, dass das Erstellen der Blockdefinitionen zu aufwendig ist, weshalb ich mich damit beschäftigt habe. Beiliegendes Tool erstellt ASCII-Dateien mit der Erweiterung BLK für Block. Diese kann mit (load"C:\\temp\\blockname.blk") geladen werden. der Block steht dann in der Zeichnung zur Verfügung und kann mit (command "_.insert" ...) in der Zeichnung verwendet werden.

Bei Fragen ...

Grüße Holger

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

Geos
Mitglied
Vermessungstechniker i.R.


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

Beiträge: 1017
Registriert: 21.09.2001

ACAD Map 2010, Win 7 Pro
eigene Lisp's<P>HW: Core i7 860, 2.8 GHz
3.3 GB, NVIDIA GeForce GTS 250

erstellt am: 23. Mai. 2002 13:05    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 s.wickel 10 Unities + Antwort hilfreich

Hallo Stefan

Vielleicht nützt Dir mein Programm  http://www.geopaint.at/CAD/Download/Acadin30.zip
, ev. als Ideenspender.

Es liest Koordinaten und Messcode aus Text-File und aus einem weiteren File die dem Code entsprechenden Blocknamen und Layer.

Gruß, Ernst

[Diese Nachricht wurde von Geos am 23. Jul. 2006 editiert.]

[Diese Nachricht wurde von Geos am 23. Jul. 2006 editiert.]

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

s.wickel
Mitglied
Bauingenieur Wasserwirtschaft


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

Beiträge: 421
Registriert: 17.12.2001

erstellt am: 23. Mai. 2002 13: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

Hallo Zusammen!

Vielen Dank für die Tips! Im Moment habe ich leider keine Zeit mich um das Problem zu kümmern, weil es nichts Projektbezogenes ist und dann sind andere Sachen immer wichtiger. Ich werde die verschiedenen Dinge ausprobieren und mich vielleicht noch mal melden!

------------------
Nodda,

Stefan 

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

AutoCATer
Mitglied



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

Beiträge: 40
Registriert: 13.02.2004

AutoCAD 2007, civil3D 2007, windows xp pro, amd athlon xp 64, 2gb ram

erstellt am: 01. Jul. 2004 13: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 s.wickel 10 Unities + Antwort hilfreich

Hallo Ernst,

Kannst du die Datei noch mal online stellen?

autocater

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