| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | Autodesk Inventor: Effizientes Engineering, ein Seminar am 17.02.2025
|
Autor
|
Thema: Befehl REIHEPFAD (238 / mal gelesen)
|
zech Mitglied
Beiträge: 97 Registriert: 09.11.2004 Autocad Architecture 2022/23, Civil3D 2022/23, Revit 2022/23, Recap Pro, 3ds Max 2022/23
|
erstellt am: 16. Jan. 2025 11:00 <-- editieren / zitieren --> Unities abgeben:
Hallo, zuerst wünsche ich allen ein gesundes neues jahr und viel Erfolg mit euren Projekten. Ich habe mit diesem Befehl ein LISP Problem, denke aber ich mach alles richtig und Autocad macht da einen Fehler in Verbindung mit Lisp. Anbei findet ihr 3 Bilder. "BILD1", die Ausgangsbasis, zeigt eine normale "LINE" und ein "Blümchensymbol". Die Buchstaben "a" und "b" sind 2 Variablennamen die ich für den Lispbefehl verwende. In der Kommandozeile gebe ich die beiden Lispbefehle "(setq a (car (entsel)))" und "(setq b (car (entsel)))" nacheinander ein und ordne so die beiden Zeichnungsobjekte, durch anklicken, zu. Nun gebe ich einen weiteren Befehl ein: "(command "reihepfad" a "" b 10 "T")" -> Das Ergebnis dieses Aufrufes sieht man im "BILD2". Arbeite ich nun mit dem Befehl interaktiv "(command "reihepfad" pause "" pause 10 "T" "")" (bei "pause" werden die beiden Objekte geklickt) ist das Ergebnis wie in "BILD3", vollkommen korrekt. Hat dazu jemand eine Idee wie es funktionieren könnte? Ich möchte nämlich vorher die Objekte auswählen und bestimmen in einem LISP-Programm Vielen Dank im voraus
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ArCADe-Spieler Mitglied Metallbautechniker
Beiträge: 388 Registriert: 05.12.2012 Win 10 64bit ACAD 2017 /LT & ACAD 2022
|
erstellt am: 16. Jan. 2025 12:25 <-- editieren / zitieren --> Unities abgeben: Nur für zech
Hallo Zech, ist nur Stochern im Nebel, da ich mich mit Lisp nicht auskenne, aber könnte es eventuell etwas mit dem Anklicken der Linie näher am oberen oder eben näher am unteren Endpunkt zu tun haben? Für mich sieht es so aus, als wäre "dem Pfad" nur einmal aufwärts (Dein Bild 2) und einmal abwärts (Dein Bild 3) gefolgt worden. Mit Start- und Endpunkt der Linie sollte es eigentlich nichts zu tun haben, da bei beiden Abarbeitungen ja wohl die selben Objekte angeklickt wurden?! Um das genauer zu evaluieren, wäre es vielleicht hifreich, anstelle der einfachen, geraden Linie, eine unsymmetrisch geknickte oder geschwungene Polylinie als Pfadobjekt zu nutzen. Grüße Gernot [Diese Nachricht wurde von ArCADe-Spieler am 16. Jan. 2025 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22360 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 16. Jan. 2025 12:49 <-- editieren / zitieren --> Unities abgeben: Nur für zech
Ich könnte an dieser Stelle schon spoilern - du liegst genau richtig nur für die Problemlösung muß er dafür noch etwas ändern "im Code". Er übergibt nämlich keine Position zum auswählen des Objektes, sondern ein Objekt. Das ist der Unterschied zu dem händischen (pause) Vergleichstest. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zech Mitglied
Beiträge: 97 Registriert: 09.11.2004 Autocad Architecture 2022/23, Civil3D 2022/23, Revit 2022/23, Recap Pro, 3ds Max 2022/23
|
erstellt am: 20. Jan. 2025 06:54 <-- editieren / zitieren --> Unities abgeben:
Hallo cadffm, hmmm, das verstehe ich nicht so ganz. Zuerst wird nach einem Objekt gefragt, da klicke ich das Blümchen an oder übergebe der Lispzeile die Variable "a". Dann wird nach einer "Pfadkurve" gefragt und es gibt eine Pickbox mit der ich die Linie anklicke. Nach einem "Punkt/Position" wird aber nicht gefragt. Könntest du mir da noch ein kleines Stückchen weiterhelfen wie der Code geändert werden muss. Es darf ja wohl nicht "(setq b (entsel))" sein. "(getpoint)" habe ich auch probiert, das klappt natürlich überhaupt nicht. Einen schönen Wochenstart und Danke schon einmal im voraus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1150 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 20. Jan. 2025 08:21 <-- editieren / zitieren --> Unities abgeben: Nur für zech
Hallo zech, probiere mal aus, was bei der interaktiven Variante "(command "reihepfad" pause "" pause 10 "T" "")" passiert, wenn Du zum wählen des Pfades mal das nahe und mal das ferne Ende der Linie anklickst. ArCADe-Spieler war da schon auf der richtigen Spur. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22360 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 20. Jan. 2025 08:57 <-- editieren / zitieren --> Unities abgeben: Nur für zech
Bitte zuerst den ArCADe/Spider Test durchführen, einfach REIHEPFAD per Hand (oder die interaktive Variante mit dem (command statement, egal) Zitat: Original erstellt von zech: Zuerst wird nach einem Objekt gefragt, da klicke ich das Blümchen an oder übergebe der Lispzeile die Variable "a". Dann wird nach einer "Pfadkurve" gefragt und es gibt eine Pickbox mit der ich die Linie anklicke. Nach einem "Punkt/Position" wird aber nicht gefragt.
Das stimmt, aber dir kann nie bekannt sein was die Funktion (hier ReihePfad) tatsächlich übernimmt und verwertet, bis man es einmal getestet hat. Der Test, den du jetzt gemacht hast, sollte dir Zeigen das es nicht egal ist WO man den Pfad anklickt, also übernimmt die Funktion von der BEnutzereingabe offenbar nicht nur "das Objekt", sondern auch die Position oder ga rnur die Position. Durch deinen vorherigen Versuch (car(entsel)) ist aber auch bekannt: NUR das Objekt, wird auch akzeptiert, allerdings entscheidet dann nicht mehr der Benutzer in welcher Richtung es geht.
Befehl: (entsel) liefert (<Objektname: 7ff7924051f0> (117.958 148.094 0.0)) Nur Objekt Befehl: (car(entsel)) <Objektname: 7ff7924051f0> Nur Koordinate Befehl: (cadr(entsel)) (117.958 148.094 0.0)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zech Mitglied
Beiträge: 97 Registriert: 09.11.2004 Autocad Architecture 2022/23, Civil3D 2022/23, Revit 2022/23, Recap Pro, 3ds Max 2022/23
|
erstellt am: 20. Jan. 2025 12:32 <-- editieren / zitieren --> Unities abgeben:
Hallo cadffm, es ist egal wo ich die Pfadkurve anklicke (siehe angehängtes Bild). das Objekt ist immer das rote Blümchen, die Pfadkurve (weiße LINE) wird einmal am grünen Kreis geklickt und im nächsten Versuch am gelben Kreis. Das Blümchen, wie gehabt Variable a und die LINE ist Variable b. Das Ergebnis ist dasselbe. Liegt die LINE in einem anderen Quadranten dann folgt das Blümchensymbol der Richtung der LINE, egal wo ich die LINE anklicke. So wie es im Moment aussieht hat die Richtung großen Einfluss, 1. und 3. Quadrant (mathematisch) funktionieren nicht, dagegen funktioniert es im 2. und 4. Quadranten. Nun könnte ich zwar im Programm den Quadranten ermitteln, aber das würde ja nichts bringen, weil die LINE ja nun mal so liegt wie sie liegt und es egal ist wo ich sie anklicke. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22360 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 20. Jan. 2025 13:03 <-- editieren / zitieren --> Unities abgeben: Nur für zech
>>"wie gehabt Variable a und die LINE ist Variable b" da habe ich aufgehört zu lesen. Du solltest bitte zunächst einmal PER HAND oder PER INTERAKTIVEM command-statement den Befehl REIHEPFAD testen, NICHT "wie gehabt". Wenn du das einmal per Hand gemacht hast ud den Unterschied sehst, dann macht sicher auch meine Erklärung (oben) sinn, nämlich das bei ÜBergabe eines Objekte, der Befehl nach einem fixen Muster vorgehen muss, denn von dir bekommt er ja die Information "wo geklickt" nicht (zumindest nicht bei der gezeigten Variante - der Variable a und b welche den Objektnamen enthalten (car(entsel)) ) Also, bitte ienmal testen und im besten Fall hier erklären das es jetzt klar ist, dann können wir weiter machen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22360 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 20. Jan. 2025 13:15 <-- editieren / zitieren --> Unities abgeben: Nur für zech
Nur für Leute die hier mit einer deutlich älteren Version arbeiten: Die "interaktive" Version mit den PAUSE funktioniert dort ggf. nicht (bis welcher Version kann ich nicht sagen). In einer Version 2013 am Testrechner war das so zumindest der Fall, dann also einfach mal per Hand ausführen um die Unterschiede zu sehen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zech Mitglied
Beiträge: 97 Registriert: 09.11.2004 Autocad Architecture 2022/23, Civil3D 2022/23, Revit 2022/23, Recap Pro, 3ds Max 2022/23
|
erstellt am: 21. Jan. 2025 06:58 <-- editieren / zitieren --> Unities abgeben:
Hallo cdffm, ich will natürlich niemanden nerven. Ist ein Fehler mit dem "car" gewesen, aber auch nach dieser Korrektur gibt es eine Unterschied zwischen der "pause" und den Lisp-Variablen. Ich denke das es sich hier um einen kleinen Fehler handeln könnte. Wie dem auch sei, ich will nun nicht weiter darauf eingehen und betrachte den Fall als abgeschlossen. Grüße aus Berlin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22360 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 21. Jan. 2025 07:34 <-- editieren / zitieren --> Unities abgeben: Nur für zech
Nix da, meine Zeit soll nicht für die Katz gewesen sein. CAR war doch kein Fehler!? Hier aber ein Problem. Aber vorher: Im Eingangspost hast du doch selbst geschrieben, mit PAUSE funktioniert? Es gibt Acad Produktversionen, da macht es wirklich keinen Unterschied. Wie auch immer, dann halt manuell. Also bitte, ReihePfad<enter> und testen.. Wenn dann die Abhängigkeit der Pick-Position klar ist, geht es weiter. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22360 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 21. Jan. 2025 07:46 <-- editieren / zitieren --> Unities abgeben: Nur für zech
Vielleicht zeigst du mal deinen aktuellen Stand und die Unterschiede der Version zw. Pause und Variable. Da man in deinen Antworten noch immer keine Bestätigung für "Pick-Position ändert das Ergebnis" findet (manuell ausgeführt), versuche ich halt zunächst dieses Feedback abzuwarten. So sollte es eigentlich auch mit PAUSE funktionieren. Und an dem Punkt wollte ich dann weitergehen :\ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zech Mitglied
Beiträge: 97 Registriert: 09.11.2004 Autocad Architecture 2022/23, Civil3D 2022/23, Revit 2022/23, Recap Pro, 3ds Max 2022/23
|
erstellt am: 23. Jan. 2025 11:09 <-- editieren / zitieren --> Unities abgeben:
Hallo cadffm, ich bin zu dem Schluss gekommen dass es da keine vernünftige Lösung gibt. Aber hier noch einmal 6 Varianten. Startpunkt der LINE bei "S", Endpunkt bei "E", magenta Blümchen soll angeordnet werden, es ist das Objekt und immer an der gleichen Stelle V1: Line bei "S" angeklickt (command "reihepfad" pause "" pause 5 "T" "") V2: wie "V1" nur mit Variablen, Blümchen = (setq a (entsel)), LINE = (setq b (entsel)), dann (command "reihepfad" a "" b 5 "T" "") V3: wie "V1" nur das die LINE diesmal am LINE-Ende (E) geklickt wurde V4: wie "V2" mit Variablen, nur das die LINE diesmal am LINE-Ende (E) geklickt wurde V5: "reihepfad" direkt in der command-Zeile eingegeben und alles manuell durchgegangen, LINE bei "S" geklickt V6: wie V5 nur wurde die LINE am "E" geklickt. Nun könnte man denken, laut "V6" und "V3", es wird vom Klickpunkt aus immer in die Richtung des Pfades angeordnet. Dies wäre aber widersprüchlich zu "V4", jedenfalls was Quadrant I und IV betrifft, da ist zwar "E" geklickt worden, aber die Symbole wurden auch in "E-Richtung" angeordnet. Grüße aus Berlin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22360 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 23. Jan. 2025 13:05 <-- editieren / zitieren --> Unities abgeben: Nur für zech
Servus,Okay, einmal raffe ich mich noch auf >>"ich bin zu dem Schluss gekommen dass es da keine vernünftige Lösung gibt." Schade, warum eigentlich, ich schaue mir deine Antwort einmal genau an Was du machen solltest, also ich 4x dazu drängte: Zunächst ausschließlich V5 und V6 (oder mit command&PAUSE statement), mehr nicht, den Rest - v1,v2,v3,v4 ignoriere ich daher zunächst komplett. Schaut man sich V5 und V6 an, so erkennt man 1. das Ergebnis ist abhängig davon wo man den Pfad anklickt, entweder an dem einen - oder an dem anderen Ende. V5 ist doch das gewünschte Ergebnis, oder? Schön- so klappt das also. 2. Der Befehl kann also unmöglich mit "nur dem Objektnamen" so funktionieren, definitiv verwertet Reihepfad auch(?) die Position des Pickens.. 3. Umsetzung in der Automatisierung: Statt einem Objektnamen, müssen wir also auch(?) die Pick-Position mitteilen. Jetzt sind wir doch schon fast bei deiner "V2" angekommen und die verwundert mich fast, ich hätte mit einem Fehler/crash der Zeile gerechnet! Noch unheimlicher: Bei mir ist das Ergebnis anders, allerdings teste ich in dem Moment auch eine ganz andere Version, Schwamm drüber.
Versuchen wir das also mit Lisp nachzuahmen. Die Position würde man zB. durch ENTSEL erhalten (Objektname und Pickposition),
Code:
(progn (setq a (car(entsel)) ; Quell-Objekt/ename (setq b (cadr(entsel))) ; Pick-Position Pfad (command "REIHEPFAD" a "" b 5 "T" "") )_progn
4. Testen und bei Problemen folgt die Analyse dazu. (falls du Probleme bekommst, bitte teilen - gerne in Schrift+Bild+DWG, alles was den potentiellen Helfern hilft, hilft dir) Hoffentlich habe ich keine Fehler eingebaut, bin nämlich gerade ganz woanders in Gedanken
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|