Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Wer kann mir beim AutoLisp helfen?

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:  Wer kann mir beim AutoLisp helfen? (2555 mal gelesen)
kegler43
Mitglied
Techniker

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

Beiträge: 3
Registriert: 13.05.2004

AutoCAD Mechanical 2004

erstellt am: 13. Mai. 2004 20:59    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 ein Problem,
Ich kenn mich mit dem AutoLisp nicht aus, habe eine Lisp-Datei bekommen die nur halb funktioniert.
Aufgabe: Es sollte ein Layer erzeugt werden, danach soll in einer bestimmten Fläche mehrere Kreise mit je einer Nummer erzeugt werden.
Eingelesen wid ein Block mit Attribut, die Koordianten wo die Kreise hin sollen, werden aus einer Text Datei(Editor)eingelesen, soweit funktioniert auch alles. Wenn aber in der Text Datei bei der Nummierung vor der Nummer ein Buchstabe steht geht des nicht mehr.
funktionieren tut zum Beispiel (Text-Datei): 50,30,12 (X,Y,Nummer)
es fnktioniert nicht:                                  50,30,R12

Ich möchte aber haben das der Buchstabe und die Nummer eingefügt werden.
Wer kann mir bitte helfen?
mfg
Kegler43

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: 13. Mai. 2004 21:37    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 kegler43 10 Unities + Antwort hilfreich

Hallo Kegler,

Um deine Frage zu beantworten: ich. ;-)

Nun aber erst einmal ein herzliches Willkommen im Forum.
Auch wenn für dich alles neu ist, ein paar Hinweise:
Möchtest du schnell eine konkrete Antwort, dann stelle den Quellcode hier in's Forum, am besten als Datei beifügen. Am einfachsten die *.lsp-Datei zuvor in eine *.txt umbenennen.
Weiterhin solltest du Dir die Mühe machen, und vor dem posten die Suchfunktion bemühen.
Das Thema, welches du hier einbringst, das Einlesen von Koordinaten und die anschließende Darstellung als Block/Attribut und oder Punkt mit Nr. ist in regelmäßigen Abständen auf der Bildfläche, so dass du bestimmt auch Lösungen findest, die evtl. sogar besser sind, als dass, was bei dir jetzt korrigiert werden soll.
Wichtig dabei ist, das du bei deiner Suche nicht nur das LISP-Forum bemühst, sondern auch immer im Rund um AutoCAD Forum suchen. Viele Sachen werden auch dort gefragt, und mal eben schnell von den Lisplern beantwortet, weshalb eben auch dort Lösungen dieser Richtung zu finden sind.

Alles klar?

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

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

kegler43
Mitglied
Techniker

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

Beiträge: 3
Registriert: 13.05.2004

erstellt am: 14. Mai. 2004 20:17    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


Nummernvonoben.txt

 
Hallo Holger!
Erst mal recht herzlichen Dank für deine Antwort! Ich habe wie du mir gesagt hast die Lisp-Datei als Quellcode angefügt, leider kann ich nicht sagen ob es komplett ist da, ich es nur eingefügt habe. Aus sicherheit hab ich die Text-Datei auch als Datei angehängt.
Es wäre ganz nett von dir wenn du mir bei meinen Problem helfen könntest, werde auch natürlich das Vorum nach ähnlichen Antworten durchsuchen.
Also hier der Quellcode:

TRANSFER Version 1.0 18.3.1993
;
; Nach der Initialisierung, die versch. globale Einstellungen konfiguriert und
; die nötigen Layer anlegt, werden aus einer Datei, die einzelne Punkte und
; die zugehörigen Punktnummern enthält diese gelesen und in die aktuelle Auto-
; CAD Zeichnung eingesetzt; gleichzeitig werden auf korresp. Layern Kontroll
; blöcke mit den entspr. Punktbezeichnungen eingesetzt.
; Die Datei muss dabei folgendes Aussehen haben:
; X-Koord1,Y-Koord1,Bez. auf Layer1,Bez. auf Layer2, ....
; X-Koord2,Y-Koord2,Bez. auf Layer1,Bez. auf Layer2, ....
; .....
; Frei konfigurierbar sind dabei
; Trennzeichen 'trenn'
; Anzahl der Layer 'layer_anz'
; Bez. für nicht belegten Layer 'blank'
; Änderungen wer wann was
; HH&HS 18.3.93 Version 1.0 & very hard testing
;*****************************************************************************
(princ "\nTRANSF1 v1.0
(princ "\nLaden .")

(defun C:INIT ( / i lnam llist)

;****************** KONFIGURATION *******************************************
;legt die Einstellungen f. die Übertragung fest; feel free to edit (if u know)

(setq offset '(36 157.69)) ;Nullpunkt der Fläche
;                                     

;LAYER der Namen setzt sich zusammen aus Prefix,lfd. Nummer und Postfix
; z.B: Nummer1 ... Nummer2, Nummer1Z ... Nummer2Z,
(setq layer_anz 4) ;Anzahl der Layer
(setq layerpref "Masch_") ;Prefix des Layernamens
(setq layerpost "z") ;Postfix  -"-

(setq blockname "Nummer von oben") ;Block zur Kontrolle auf den -z Layer
;ACHTUNG: muss im aktuellen Verzeichnis exist.

(setq trenn ",") ;Trennzeichen zwischen records
(setq blank 0) ;kein Eintrag

(setq startdir "C:\Textfiles") ;Vorgabe beim Koordfile wählen
(setq koordext "TXT") ;Extension f.d. Koordinatenfiles

(setq prlist '(| \ - /)) ;funny little list
;*****************************************************************************
(setq ocmdecho (getvar "CMDECHO"))
(setvar "CMDECHO" 0)

(setq i 1)
(while (<= i layer_anz)
(if (= i 1)
(setq llist (setq lnam (strcat layerpref (itoa i))))
(setq llist (strcat llist "," (setq lnam (strcat layerpref (itoa i)))))
)
(setq llist (strcat llist "," (strcat lnam layerpost)))
(setq i (1+ i))
)
(command "LAYER" "n" llist "")
(setq i 1)
(while (<= i layer_anz)
(command "LAYER" "fa" i (strcat layerpref (itoa i) "*") "")
(setq i (1+ i))
)
'fertig
)

(princ ".")

(defun C:TRANSFER ()

(setq oosmode (getvar "OSMODE"))

(setq oucsicon (getvar "UCSICON"))
(setq oclayer (getvar "CLAYER"))

(setvar "OSMODE" 0)
(setvar "UCSICON" 2)

(setq asck (ascii "."))
(setq asct (ascii trenn))
(setq error nil)
(setq eof nil)
(setq j 0)

(setq mstatus (+ 2 layer_anz))
(command "BKS" "w")
        (command "BKS" "ur" offset)
(command "BKS" "x" 180)

(if layer_anz
(progn
(setq datei (getfiled "Koordinatendatei wählen" startdir koordext 4))
(if datei
(if (setq f (open datei "r"))
(progn
(setq status 0)
(setq n 0)
(setq error nil)
(princ "\nÜbertragung läuft:  ")
(while (and (not error) (not eof))
(if (= status mstatus) (setq status 1) (setq status (1+ status)))
(setq pkoord nil)
(cond
((= status 1)
(if (setq pkoord (lies-zahl nil))
(setq plist (list pkoord))
(setq error T)
)
(if eol
(setq error T)
(progn
(if (and eof (/= str ""))
(setq error T)
)
)
)
)
((= status 2)
(if (and (setq pkoord (lies-zahl nil)) (not eol) (not eof))
(setq plist (reverse (cons pkoord plist)))
(setq error T)
)
)
((<= status mstatus)
(if (= status mstatus)
(progn
(setq n (1+ n))
(if (not (and (setq attrib (lies-zahl T)) (or eof eol)))
(setq error T)
(if (and eof (= "" str))
(setq error T)
)
)
)
(if (not (and (setq attrib (lies-zahl T)) (not eol) (not eof)))
(setq error T)
)
)
(if (/= attrib 0)
(progn
(setvar "CLAYER" (setq lnam (strcat layerpref (itoa (- status 2)))))
(command "PUNKT" plist)
(setvar "CLAYER" (strcat lnam layerpost))
(command "EINFÜGE" blockname plist "1" "1" "0" attrib)
(if (= (rem n 5) 0)
(progn
(princ "\010")
(princ (nth j prlist))
(if (= j (1- (length prlist))) (setq j 0) (setq j (1+ j)))
)
)
)
)
)
)
)
(if error
(progn
(princ "\007\nFehler beim Lesen der Datei '")
(princ datei)
(princ "' in der Zeile ")
(princ n)
(princ ".\n")
)
)
(close f)
)
(progn
(princ "\007\nDie Koordinatendatei '")
(princ (strcase datei))
(princ "' kann nicht geöffnet werden.\n")
(setq error T)
)
)
(progn
(princ "\007\nKeine Datei ausgewählt.\n")
(setq error T)
)
)
(if error
(alert "ABBRUCH: Es wurden keine Daten übertragen!")
(progn
(princ "\010    Anzahl der übertragenen Punkte: ")
(princ n)
(princ "\n")
)
)
(command "BKS" "w")
(setvar "CMDECHO" ocmdecho)
(setvar "UCSICON" oucsicon)
(setvar "OSMODE" oosmode)
(setvar "CLAYER" oclayer)
'fertig
)
(alert "ABBRUCH: Transfer ist noch nicht initialisiert!")
)
)

(princ ".")

(defun lies-zahl (ganz)
(setq komma ganz)
(setq done nil)
(setq error nil)
(setq eol nil)
(setq eof nil)
(setq str "")
(while (not done)
(setq c (read-char f))
(cond
((and (<= (ascii "1") c) (>= (ascii "9") c))
(setq str (strcat str (chr c)))
)
((= c (ascii "0"))
(if (and (= str "") komma)
(setq str (chr c))
)
(setq str (strcat str (chr c)))
)
((= c asck)
(if komma
(progn
(setq error T)
(setq done T)
)
(progn
(setq str (strcat str "."))
(setq komma T)
)
)
)
((= c asct)
(if (= "" str) (setq error T))
(setq done T)
)
((= c 10)
(if (= "" str) (setq error T))
(setq eol T)
(setq done T)
)
((not c)
(setq eof T)
(setq done T)
)
(T
(setq error T)
(setq done T)
)
)
)
(if (not error)
(if ganz (atoi str) (atof str))
)
)

(princ ".")
(princ "    Initialisieren mit 'INIT', Starten mit 'TRANSFER'  ")
'fertig

Ich hoffe ich habs richtig gemacht, wenn nicht gib mir bitte bescheid, vielleicht kann ich dir die Datei per email schicken?
Leibe Grüße
Kegler

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

Proxy
Ehrenmitglied
Stateless-DHCP v6-Paketfragmentierer


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

Beiträge: 1629
Registriert: 13.11.2003

Tastaturen, Mäuse,
Pladden, ...,
AutoCADs 200X, SWX 2kX

erstellt am: 14. Mai. 2004 21:44    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 kegler43 10 Unities + Antwort hilfreich


TRANSFER.LSP.txt


test.txt

 
kannst du bitte so schnell wie möglich deine AutoCad Version in das Infofeld eintragen und den benötigten Block "Nummer von oben.dwg"


------------------
"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

kegler43
Mitglied
Techniker

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

Beiträge: 3
Registriert: 13.05.2004

erstellt am: 14. Mai. 2004 22:01    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


Nummervonoben.zip

 
Hallo!
Hier der Block "Nummer von oben" im Anhang
mfg
kegler

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