| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: warum gehts nicht ?? immer probleme mit if (1167 mal gelesen)
|
chris888 Mitglied Technischer Zeichner
Beiträge: 141 Registriert: 11.11.2010 AutoCAD 2002, 2005, 2008, 09, 10, 11
|
erstellt am: 05. Jul. 2011 17:33 <-- editieren / zitieren --> Unities abgeben:
(defun c:kope(/ e0 e1 e2 e3 e4) (if (/= e0 nil) ( (setq e0(getpoint "\nEinfügepunkt 1 wählen: "))(setq e1(getpoint "\nEinfügepunkt 2 wählen: "))(setq e2(getpoint "\nEinfügepunkt 3 wählen: "))(setq e3(getpoint "\nEinfügepunkt 4 wählen: "))(setq e4(getpoint "\nEinfügepunkt 5 wählen: ")) ) ( (initget 7 "0 1 2 3 4 _e0 e1 e2 e3 e4")(setq mach(getkword "\nBitte Nummer für Geschoss eingeben WOVON 0,1,2,3,4: "))(initget 7 "0 1 2 3 4 _e0 e1 e2 e3 e4")(setq mach2(getkword "\nBitte Nummer für Geschoss eingeben WOHIN 0,1,2,3,4: "))(command "_copy" (ssget) "" (eval (read mach)) (eval (read mach2))) ) ) ) So ich hab die funktion Ohne if perfekt am laufen. so wie ich die if funktion aufgebaut hab "sollte" sie funktionieren.
Problem 1: er macht nicht einfügepunkt 1 sondern 2 als erstes (WIESO??) Problem 2: initget/getkword 1 hat ein problem beim übergeben der werte und lässt sich nur mit leertaste beenden. (WIESO?) Mir ist DEFENITIV klar das das IF schuld is aber kann mir einer sagen warum?? und mir viell. helfen das richtig zu stellen?? danke im vorraus mfg chris ps: hab hier mal ne andere variante (setq oo(getdist "\nBitte versatzlänge angeben: "))(command "_copy" (ssget) "" pause oo) die aber leider auch nicht funktioniert weil der copy-befehl die zweite eingabe nicht als länge definiert sondern als punkt und ihn nicht erkennt -.- [Diese Nachricht wurde von chris888 am 05. Jul. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 05. Jul. 2011 18:24 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
|
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 05. Jul. 2011 18:39 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
Ich kann den Code nicht sinnvoll korrigieren, weil sich mir nicht erschließt, was passieren sollte, wenn Variable e0 nicht nil ist bzw. doch. BTW solange e0 bei der Liste der lokalen Variablen steht ist sie nach aufruf immer erst mal auf nil. Initget 7 und dann 0 in der Liste - das kann auch nicht klappen. Schreib mal auf, was du erreichen willst. Das geht schneller zu erledigen, als deine nicht kommentierten Codefragmente zu verbessern. Hier mal ein sinnfreier Code mit einigen Korrekturen. Code:
(defun c:kope (/ e0 e1 e2 e3 e4) (if (boundp e0) ; besser als mit nil zu vergleichen (progn ; Zusammenfassen mit Progn (Print e0) (setq e0 (getpoint "\nEinfügepunkt 1 wählen: ")) (setq e1 (getpoint "\nEinfügepunkt 2 wählen: ")) (setq e2 (getpoint "\nEinfügepunkt 3 wählen: ")) (setq e3 (getpoint "\nEinfügepunkt 4 wählen: ")) (setq e4 (getpoint "\nEinfügepunkt 5 wählen: ")) ) (progn ; else (initget 7 "0 1 2 3 4 _e0 e1 e2 e3 e4") (setq mach (getkword "\nBitte Nummer für Geschoss eingeben WOVON [0/1/2/3/4/_e0/e1/e2/e3/e4]: " ) ) (initget 7 "0 1 2 3 4 _e0 e1 e2 e3 e4") (setq mach2 (getkword "\nBitte Nummer für Geschoss eingeben WOHIN [0/1/2/3/4/_e0/e1/e2/e3/e4]: " ) ) (command "_copy" (ssget) "" (eval (read mach)) (eval (read mach2)) ) ) ) ); ende Defun
------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
chris888 Mitglied Technischer Zeichner
Beiträge: 141 Registriert: 11.11.2010 AutoCAD 2002, 2005, 2008, 09, 10, 11
|
erstellt am: 06. Jul. 2011 07:56 <-- editieren / zitieren --> Unities abgeben:
@Hübner: Sie soll ja auch beim ersten aufruf nil sein. dannach soll sie definiert werden und dann verwendbar sein. Sinn der sache ist das ich verschiedene Einfügepunkte (Bezugspunkte) am anfang definiere und dann später durch kopieren von Objekten mich auf diese Punkte beziehe. --> Um das zu umgehen stellt sich mir die Frage ob es möglich ist Variablen in Zeichnungen zu speichern??? So das man beim neuen öffnen der datei z.b. die einfügepunkte NICHT neu definieren muss. @Cadmium: Sry ja da hast du recht -.- (/ e0 e1 e2 ...) sollte eigentlich nicht der fall sein. aber selbst wenn sie nicht gelöscht werden funktioniert es nicht. Probiert doch bitte mal die funktion aus das ihr seht woran sie scheitert. mfg chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
chris888 Mitglied Technischer Zeichner
Beiträge: 141 Registriert: 11.11.2010 AutoCAD 2002, 2005, 2008, 09, 10, 11
|
erstellt am: 06. Jul. 2011 08:41 <-- editieren / zitieren --> Unities abgeben:
So habs jetzt richtig gestellt und doch mit nil verglichen. Wäre aber nett wenn du mit den (boundp)- Bezug erklären könntest bzw. was er bedeutet. Hab in der hilfe nix gefunden. Code:
(defun c:kopes () (if (= e0 nil) (progn (Print e0) (setq e0 (getpoint "\nEinfügepunkt 1 wählen: ")) (setq e1 (getpoint "\nEinfügepunkt 2 wählen: ")) (setq e2 (getpoint "\nEinfügepunkt 3 wählen: ")) (setq e3 (getpoint "\nEinfügepunkt 4 wählen: ")) (setq e4 (getpoint "\nEinfügepunkt 5 wählen: ")) ) (progn (initget 7 "0 1 2 3 4 _e0 e1 e2 e3 e4") (setq mach (getkword "\nBitte Nummer für Geschoss eingeben WOVON [0 1 2 3 4]: " ) ) (initget 7 "0 1 2 3 4 _e0 e1 e2 e3 e4") (setq mach2 (getkword "\nBitte Nummer für Geschoss eingeben WOHIN [0 1 2 3 4]: " ) ) (command "_copy" (ssget) "" (eval (read mach)) (eval (read mach2)) ) ) ) )
So funktioniert der Befehl. Danke an Hübner u Cadmi. Bleibt nur noch die frage von oben: Kann man eine Variable in einer Zeichnung speichern? Und noch eine andere wenn ich schon dabei bin^^: Gibt es eine Funktion die Zeitabhängig funktioniert? also sinn soll sein: Ich will das z.b. wenn 5minuten nichts gemacht wird die zeichnung automatisch geschlossen werden soll. Leider habe ich noch keinen ansatz aber ich will es auf jeden fall Zeitabhängig machen. Gibt es da eine Funktion die so etwas überwacht? sonst bleibt warscheinlich nur die Variable TDINDWG. NOCHMAL DANKE mfg chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 06. Jul. 2011 08:53 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
Hallo Chris, Zitat: Original erstellt von chris888:
Wäre aber nett wenn du mit den (boundp)- Bezug erklären könntest bzw. was er bedeutet. Hab in der hilfe nix gefunden.
in der Anlage ist die betreffende Stelle in der Entwickler-Dokumentation. Viele Grüße Bernd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 06. Jul. 2011 08:59 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
Zitat: Original erstellt von chris888: ...Bleibt nur noch die frage von oben: Kann man eine Variable in einer Zeichnung speichern? ...
häng sie als xdata an ein von dir definiertes Objekt zum Thema xdata solltest du genug im Forum finden Edit: dictionary wäre auch noch möglich... viel spaß beim variablen speichern ------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." [Diese Nachricht wurde von Dorfy am 06. Jul. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 06. Jul. 2011 09:09 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 06. Jul. 2011 09:37 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
Zitat: Original erstellt von chris888:
Gibt es eine Funktion die Zeitabhängig funktioniert? also sinn soll sein: Ich will das z.b. wenn 5minuten nichts gemacht wird die zeichnung automatisch geschlossen werden soll. Leider habe ich noch keinen ansatz aber ich will es auf jeden fall Zeitabhängig machen. Gibt es da eine Funktion die so etwas überwacht? sonst bleibt warscheinlich nur die Variable TDINDWG.
Dazu kannst du ein Programm schreiben, das 2 Reaktoren installiert. Der erste ist ein Sysvarreaktor , der auf "cdate" reagiert und vergleicht , ob die vorgabe zeit erreicht ist, der 2. ist ein commandreraktor , ber bei jedem Aufruf ( also jeder Anwenderaktion) die Vorgabezeit neu schreibt. Ich find die Idee aber ------------------ - 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 |
chris888 Mitglied Technischer Zeichner
Beiträge: 141 Registriert: 11.11.2010 AutoCAD 2002, 2005, 2008, 09, 10, 11
|
erstellt am: 06. Jul. 2011 10:58 <-- editieren / zitieren --> Unities abgeben:
|
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 06. Jul. 2011 11:09 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
@Chris888 - your are banned Beleidigungen dieser Art von angesehenen Mitgliedern möchte ich nicht kommentarlos hier stehen lassen. Bitte schaue in die Nettiquette und editiere deinen Beitrag!Wenn du pers. Probleme hast, dann lebe das bitte nicht in einem Fachforum aus. Thomas (Cadmium) hatte gerade zuvor ein paar konstruktive Hilfen gegeben und als Entscheidungshilfe seine Meinung über Programierung eines Inaktivitätstimers in AutoCAD zu realisieren kundgetan (Seine Meinung teile ich). Die Ideen, die ich eigentlich äußern wollte, werde ich mir bei dir von jetzt an verkneifen, um mich keinen möglichen Angriffen deinerseits auzusetzen. ------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de [Diese Nachricht wurde von CAD-Huebner am 06. Jul. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 06. Jul. 2011 11:49 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
|
chris888 Mitglied Technischer Zeichner
Beiträge: 141 Registriert: 11.11.2010 AutoCAD 2002, 2005, 2008, 09, 10, 11
|
erstellt am: 06. Jul. 2011 13:47 <-- editieren / zitieren --> Unities abgeben:
|
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 06. Jul. 2011 13:55 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
ich schliesse mich udo und thomas an. dann sind wir schon zu dritt. der einzige in dem thread, der poebelt, bist du. die antwort von thomas war sachlich und fachlich richtig (aber ohne hilfe wirst du sie wahrscheinlich nicht hinbekommen). gruss marco ------------------ Marco Heuer www.arc-aachen.de Airport Office Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Geos Mitglied Vermessungstechniker i.R.
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: 07. Jul. 2011 12:23 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
|