Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Block einfügen klappt nicht

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 einfügen klappt nicht (2641 mal gelesen)
Frank88
Mitglied



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

Beiträge: 153
Registriert: 11.10.2004

AutoCAD 2019/C3D

erstellt am: 16. Okt. 2011 21:52    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,

hat's geschrieben und kanns nicht lesen...
Ich habe vor Jahren schon mal ne Anfrage gemacht, wie man Blöcke einfügt und da auch Antworten bekommen:
http://ww3.cad.de/foren/ubb/Forum145/HTML/000925.shtml#000000
jetzt stehe ich wieder vor diesem Problem, habe die Dateien und Daten von damals nicht zur Verfügung und werde aus diesem Thread (und auch den anderen, die die Forensuche für "Block einfügen" liefert) nicht schlau.

Code:
(setq X1 (- X 0.8))                 
(setq SubRW (Text_z Y X1 "Code" Code))
(setq SubRW (Symbol Code))           
(setq BlockN (car SubRW))           
(command "_-insert" BlockN (list Y X))

Diese Zeilen sollen mir an eine Punktposition die Codierung (liegt numerisch vor) schreiben und einen, in der Zeichnung definierten Block (dem Code entsprechendes Symbol) einfügen.
Das passiert aber nicht. Der Codeteil wird durchlaufen, was man daran sieht, daß die Zahl an die entsprechende Stelle gesetzt wird, aber das Symbol wird nicht eingefügt.
Was mache ich falsch?

"Text_z steht" für eine Funktion, die mir den Code an den punkt schreibt und "Symbol" holt mir aus einer ASCII-Datei Layer und Blockname in ein dotted pair. Auch das funktioniert, wie ich schon durch "princ" vor dem command-Aufruf getestet habe.

Grüße, Frank

P.S.: Kann mich erst wieder in 18-20 Stunden damit befassen - hat also Zeit.

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

Alles

erstellt am: 16. Okt. 2011 22:47    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 Frank88 10 Unities + Antwort hilfreich

Hast du dir denn den AutoCAD-Befehl EINFÜGE (_insert) in der Befehlszeilenversion (-EINFÜGE/_-insert) denn schonmal wirklich angesehen ?
Wenn du also damit kein Verständnisproblem hast dann mußt du deine Lisp-Werte überprüfen.
(andernfalls: spiele den Spass händisch in der Befehlszeile durch: -EINFÜGE / AutoCAD-Hilfe Befehl -EINFÜGE)
   
Welchen Wert hat denn X ?
Welchen Wert hat denn Y ?
Welchen Wert hat denn BlockN ?

 
Teste mal statts dieser Zeile (command "_-insert" BlockN (list Y X)) folgende:
(command "_-insert" BlockN (list Y X) "1" "1" "0") oder

oder auch mal:

(alert(strcat
"X=" (rtos x 2 8) "\n"
"Y=" (rtos y 2 8) "\n"
"BlockN=" BlockN "\n"
(if (tblobjname"BLOCK" BlockN) "" (strcat BlockN " ist nicht definiert")
)))

------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

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

Frank88
Mitglied



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

Beiträge: 153
Registriert: 11.10.2004

AutoCAD 2019/C3D

erstellt am: 17. Okt. 2011 18: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 und vielen Dank für deine Antwort!

Zitat:
(command "_-insert" BlockN (list Y X) "1" "1" "0")

liefert mir

Zitat:
Unbekannter Befehl "1". Drücken Sie F1-Taste für Hilfe.
Unbekannter Befehl "1". Drücken Sie F1-Taste für Hilfe.
Unbekannter Befehl "0". Drücken Sie F1-Taste für Hilfe.
Unbekannter Befehl "1". Drücken Sie F1-Taste für Hilfe.
Unbekannter Befehl "1". Drücken Sie F1-Taste für Hilfe.
Unbekannter Befehl "0". Drücken Sie F1-Taste für Hilfe.
Unbekannter Befehl "1". Drücken Sie F1-Taste für Hilfe.
Unbekannter Befehl "1". Drücken Sie F1-Taste für Hilfe.
Unbekannter Befehl "0". Drücken Sie F1-Taste für Hilfe.
Unbekannter Befehl "1". Drücken Sie F1-Taste für Hilfe.
Unbekannter Befehl "1". Drücken Sie F1-Taste für Hilfe.
Unbekannter Befehl "0". Drücken Sie F1-Taste für Hilfe.
Unbekannter Befehl "1". Drück

Wahlweise mit und ohne Gänsefüßchen um die Zahlen, jenachdem, wie ich's im Code schreibe.
X und Y haben gültigeund richtige Werte, da der Code (und die Punktnummer und die Höhe des Punktes) an die richtige Stelle neben dem Punkt geschrieben werden. Die Koordinaten dafür werden hier

Code:
(setq X1 (- X 0.8))

für die x-Koordinate des Textes für den Code aus X (das dann im Original so weiter verwendet wird) berechnet.
In BlockN steht als String der Name des einzufügenden Blockes - so, wie er unter "Einfügen - Block... - [Name]" ausgewählt werden würde, wenn ich ihn von Hand einfüge.

Wenn ich den Codeschnipsel aus deinem Posting einfüge, liefert mir Acad den Fehler

Zitat:
Fehler: Fehlerhafter Argumenttyp: stringp nil

Hier noch die Rückgabe von Acad bei Eingabe des Befehls von Hand

Zitat:
Befehl: (command "_-insert" "ZS" (list 10 10) "1" "1" "0")
nil

... und voilà - der Block ist eingefügt. Drum verstehe ich ja auch nicht, warum es mit Lisp nicht geht.

Grüße, Frank

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

Frank88
Mitglied



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

Beiträge: 153
Registriert: 11.10.2004

AutoCAD 2019/C3D

erstellt am: 17. Okt. 2011 18: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

Hallo cadffm!

manchmal braucht's eben den Rempler von außerhalb. Oder vielleicht war's gestern nur zu spät.
Ich Depp hole mir ja die Zuordnung, welches Symbol für welchen Code genutzt werden soll, aus einer ASCII-Datei. Die Datei gibt's auch tatsächlich und es steht drin, was drinstehen soll. damit ich aber zuhause vorm Rechner weiter dran arbeiten kann, habe ich mir alles auf nen USB-Stick kopiert.
Tja, der hatte dann am anderen Rechner einen anderen Laufwerksbuchstaben, als im Büro.

Code:
;Codezuordnungsdatei im Lesemodus öffnen
(setq CodeDat (findfile "L:/Test/Code.csv"))
(cond
;Code.csv existiert nicht--->CodeDat=nil, wird nicht ausgewertet
((not (null CodeDat))
(setq CodeDat (open CodeDat "r"))
(setq CZeile T)

Hier habe ich mir extra noch hingeschrieben, daß ich da aufpassen muß, bzw. wenn Datei nicht da, nix Auswerten!
Dein Posting hat mich dann nochmal ein paar princ einfügen lassen und da erschien dann ziemlich häufig "nil". Problem erkannt - Problem gelöst.

Grüße, Frank

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

Alles

erstellt am: 18. Okt. 2011 08:14    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 Frank88 10 Unities + Antwort hilfreich

Na prima ! Für die nächsten Zeilen nutzt du dann einfach noch ein paar IF-Anweisungen mehr,
dann hast du den Ärger nicht mehr.

Wenn Datei vorhanden
und
wenn <ermittelter String> vorhanden
und
wenn Blockdefinition mit diesem Namen gefunden wird
DANN mach im Programm weiter..

------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

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