| | | 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: Abstand mit entsel die zweite (2243 mal gelesen)
|
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 14. Jun. 2004 14:00 <-- editieren / zitieren --> Unities abgeben:
Hallo Autolisper, ich habe da dieses super Prog von Benwisch bekommen, würde mir aber noch 'ne Kleinigkeit zu wünschen. Wenn nach dem ersten Punkt gefragt wird und ich Enter drücke das dann der nornale _dist Befehl aufgerufen wird. Meine armseligen Versuche mit (if (= punkt1 "")(_dist)) und andere 1000 Versuche haben nicht funktioniert. Vieleicht kann mir jemand weiterhelfen. Gruß Jürgen hier der ganze Code: ;;; die vielen setq's dienen nur zum besseren Verständnis ;;; ----------------------------------------------------- ;;; (defun c:mess (/ ankathete gegenkathete hypotenuse punkt1 punkt2 winkelalpha) (setq punkt1 (osnap (cadr (grread (car (entsel)))) "_nea")) (setq punkt2 (osnap (cadr (grread (car (entsel)))) "_nea")) (setq winkelalpha (angle punkt1 punkt2)) (setq hypotenuse (distance punkt1 punkt2)) (setq ankathete (* hypotenuse (cos winkelalpha))) (setq gegenkathete (* hypotenuse (sin winkelalpha))) (alert (strcat "\n---------------------------------" "\nAbstand = "(rtos hypotenuse 2 4) "\n Delta X = "(rtos ankathete 2 4) "\n Delta Y = "(rtos gegenkathete 2 4) "\n---------------------------------" ) ; strcat ) ;_ alert
(princ (strcat "\nAbstand = " (rtos hypotenuse 2 4) "\t" "Delta X = " (rtos ankathete 2 4) "\t" "Delta Y = " (rtos gegenkathete 2 4) ) ) (princ) ) [Diese Nachricht wurde von Jürgen Scheeren am 14. Jun. 2004 editiert.] [Diese Nachricht wurde von Jürgen Scheeren am 14. Jun. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
benwisch Mitglied Bautechniker, CAD-Konstrukteur
Beiträge: 375 Registriert: 01.02.2001
|
erstellt am: 14. Jun. 2004 17:46 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
Hallo Juergen Zitat:
ich habe da dieses super Prog von Benwisch bekommen,...
mein kleines lisp-konstrukt sollte eigentlich dir nur einen Ansatz zeigen wie man vorgehen könnte. Darf ich fragen warum du den _dist Befehl haben möchtest ? Ich ahne es schon... ------------------ www.benwisch.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Time flies like an arrow, fruit flies like a banana (Groucho Marx)
|
erstellt am: 15. Jun. 2004 11:07 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
Only specialized AutoLISP routines need this function. Most input to AutoLISP should be obtained through the various getxxx functions. So steht's jedenfalls in der Hilfe zu AutoLisp. Benwisch, wozu diese verquaste Methode mit grread und Ofang _nea, um einen Punkt auszuwählen? Wenn der User nicht explizit doch noch einen 'richtigen' Ofang von Hand drübersetzt, wird das Messergebnis verfälscht: Der User zeichnet eine Linie von 0,0 nach 10,0 und ruft dann dieses Programm auf. Osmode hat den Wert 37 (z.B.), also ist Ofang _end eingeschaltet. Nützt aber dem User nix, das Programm verwendet als Messgrundlage (z.B.) die Punkte (0.0151554 0.0 0.0) bzw. (9.94178 0.0 0.0), sofern er nicht zweimal den Ofang _nea wieder explizit durch Eingabe von _end außer Kraft setzt. Was also soll diese Vorgehensweise bringen? Hier war in letzter Zeit öfters mal was zu lesen wie "jeder kann ja schließlich programmieren wie er will" und "viele Wege führen zum Ziel". Na ja, es gibt tatsächlich meist mehrere Wege, aber dieser Weg führt mit Sicherheit nur ins Abseits. Wenn ich Lispminister wäre, würde ich die erste Aussage etwas einschränken und die Verwendung und Weitergabe, insbesondere die Veröffentlichung in Foren, sofort verbieten! Und nun zu Jürgen: Wie wär's denn, wenn du mal schreiben würdest, was eigentlich dein Problem ist und was du erreichen möchtest? Dann könnte dir auch geholfen werden. Gruß, Axel ------------------ Meine AutoLisp-Seiten Meine private Homepage Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze Meine Überzeugung... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
benwisch Mitglied Bautechniker, CAD-Konstrukteur
Beiträge: 375 Registriert: 01.02.2001
|
erstellt am: 15. Jun. 2004 13:51 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
Hallo Axel, Zitat:
Benwisch, wozu diese verquaste Methode mit grread und Ofang _nea, um einen Punkt auszuwählen? ... Was also soll diese Vorgehensweise bringen?
schau mal hier bitte diesen Thread an. Er will einen lotechten Abstand von zwei Segmenten haben und das ohne eingeschalteten Ofang. Er will dies über eine Auswahl erreichen. Ich wollte einen Ansatz zeigen, wie man so etwas lösen könnte, ohne näher auf BKS, Poly's und gedrehte Objekte einzugehen. [Diese Nachricht wurde von benwisch am 15. Jun. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Time flies like an arrow, fruit flies like a banana (Groucho Marx)
|
erstellt am: 15. Jun. 2004 14:44 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
> schau mal hier bitte diesen Thread an Hab ich, das erklärt auch einiges, wenn auch nicht alles. Wenigstens weiss ich jetzt, wie das entstanden ist;-) Ich bleibe aber dabei: Diese Funktion gibt nur den ungefähren Abstand zurück, wenn man nicht nochmal bei jeder Punktwahl einen Einzel-Ofang setzt. Jürgen, es wäre doch nett, wenn du bei weiteren Postings irgendwie erwähnen würdest, worum es überhaupt geht. Du kannst doch nicht erwarten, dass jemand, der hier guten Willens ist zu helfen, alle deine vorigen Threads im Kopf hat bzw. erstmal auf Verdacht das ganze Forum durchliest. Warum hast du hier einen neuen Thread aufgemacht und nicht mal ein Hinweis auf den alten gesetzt? Nachdem ich nun die Vorgeschichte gelesen habe, ist mir die Aufgabe aber eigentlich immer noch nicht ganz klar. Geht es nun um den Abstand zweier Punkte oder den (kürzesten) Abstand zwischen einem Punkt und einer Geraden? Und schließlich: Was willst du mit dem 'normalen _dist' noch ausrichten, wenn der User keine Eingabe gemacht hat, sondern Return gedrückt hat (was übrigens Nil zurückgibt, aber keine leere Zeichenkette)? Im Übrigen: Ich habe das auch schon erlebt, dass der Ofang (Fang ist was anderes!) etwas schlapp war, aber nur in sehr sehr dicken Zeichnungen. Im Regelfall lag es dann am Konzept der Zeichnungen, d.h. es wurden irgendwelche maroden Techniken angewendet (z.B. EIN/AUS bei Layern statt FRIEREN/TAUEN [nur als Beispiel, bin jetzt nicht ganz sicher, ob nun genau dies Einfluß auf die Ofang-Geschwindigkeit hat] oder unzulängliches XREF-Handling). Gruß, Axel ------------------ Meine AutoLisp-Seiten Meine private Homepage Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze Meine Überzeugung... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 18. Jun. 2004 10:01 <-- editieren / zitieren --> Unities abgeben:
Hallo benwisch, Hallo Axel, erstmal sorry das ich mich erst jetzt melde, war zwei Tage nicht im Haus und danke für eure Beiträge. @benwisch Dein "kleines lisp-konstrukt" hat meine Wünsche voll erfüllt. Den _dist Befehl hätte ich gerne, weil, wie Axel schon richtig Bemerkte, wenn ich von Punkt zu Punkt messe das ganze einen falschen Wert ergibt.Wenn ich schonmal so ein Tool zum messen habe, wollt ich das ganze auch mit dem Befehl _dist rund machen um alle benötigten Funktionen direkt zur Verfühgung zu haben. @Axel ich hätte natürlich zum besseren Verständniss einen Thread setzen können, hast schon recht. Habe diese Frage aber erst mal vollkommen losgelöst von meinem ersten Beitrag gesehen. Ich will aber gerne nochmal erklären worum es geht. Die meisten meiner Messungen sind die Abstände zwischen zwei Linien die parallel zueinander sind und es geht halt viel schneller und mit weniger Mausklicks durch das Prog von benwisch. Ab und zu muß ich aber auch eine Strecke, also Punkt zu Punkt messen und da war meine Idee im selben Prog dann denn Befehl _dist einzubauen, um alle Funktionen zur Verfühgung zu haben. Aber zurück zu meinem Beitrag. Wäre es möglich den Befehl einzubauen, muß ja nicht mit Enter sein, kann ja auch durch Einsetzen irgend einer Zahl oder eines Buchstabens sein und dann vieleicht mit der if Funktion die dann den _dist Behfehl aufruft. Weiß halt nicht was man noch zusätzlich in dieser ersten Zeile zur Eingabe eines Punktes einsetzen muß und wie, um dort noch einen Wert einsetzen zu können(getdist, getstring......??) Gruß Jürgen [Diese Nachricht wurde von Jürgen Scheeren am 18. Jun. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Time flies like an arrow, fruit flies like a banana (Groucho Marx)
|
erstellt am: 18. Jun. 2004 11:39 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
Das überzeugt mich immer noch nicht: Code:
(setq punkt1 (osnap (cadr (grread (car (entsel)))) "_nea")) (setq punkt2 (osnap (cadr (grread (car (entsel)))) "_nea")) (setq winkelalpha (angle punkt1 punkt2)) (setq hypotenuse (distance punkt1 punkt2)) (setq ankathete (* hypotenuse (cos winkelalpha))) (setq gegenkathete (* hypotenuse (sin winkelalpha)))
punkt1 und punkt2 werden ungenau berechnet! Daraus resultiert natürlich, dass auch winkelalpha und die Dreieckseiten ungenau werden. Mit anderen Worten: Egal, wie dieses Programm verwendet wird, es liefert nur 'Näherungswerte'. Völlig losgelöst davon, was dieses Programm macht: Der Ofang _NEA ist nicht präzise - er schränkt einen Pickpunkt immer nur etwas ein, aber nicht so, dass er wirklich für Berechnungen zu gebrauchen wäre. _NEA ist was für das Malen von Positionsnummer und das optisch gefällige Ausrichten von Texten oder Führungslinien - aber ein Zeichner, der mit permanent eingeschaltetem _NEA malt, kriegt bei mir sofort eine Abmahnung! Also nochmal: du kommst nicht umhin, einen 'echten' Ofang zu benutzen. Es bringt doch nix, dass der User erst falsche Werte kriegt, dann ENTER drücken muss, dann die Punkte nochmal wählen muss und DANN schließlich ein korrektes Ergebnis kriegt (und das auch nur auf Sonderwunsch). Gruß, Axel ------------------ Meine AutoLisp-Seiten Meine private Homepage Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze Meine Überzeugung... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 18. Jun. 2004 11:49 <-- editieren / zitieren --> Unities abgeben:
Hallo Axel, OK, OK, OK. Deine Argumente stimmen natürlich, da bin auch ich jetzt als Gelegenheislisp-Verstümmler überzeugt. Ich biete dir ein "_mid", was hälst du davon. Wie würdest du das den lösen? Gruß Jürgen [Diese Nachricht wurde von Jürgen Scheeren am 18. Jun. 2004 editiert.] [Diese Nachricht wurde von Jürgen Scheeren am 18. Jun. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 18. Jun. 2004 14:18 <-- editieren / zitieren --> Unities abgeben:
Hallo Immer-noch-hilfswillige, hier mein neuer Ansatz. Muß aber damit ich die Funktion getpoint bekomme, jeweils zweimal auf eine lehre stelle Klicken. Vieleicht kann es jemand abkürzen? Gruß Jürgen Hier der Code: ;;; die vielen setq's dienen nur zum besseren Verständnis ;;; ----------------------------------------------------- ;;; (defun c:mess (/ ankathete gegenkathete hypotenuse punkt1 punkt2 winkelalpha) (setq punkt1 (osnap (cadr (grread (car (entsel)))) "_mid")) (if (= punkt1 nil) (SETQ punkt1(GETPOINT"\n Punkt1: "))) (setq punkt2 (osnap (cadr (grread (car (entsel)))) "_mid")) (if (= punkt2 nil) (SETQ punkt2(GETPOINT"\n Punkt2: "))) (setq winkelalpha (angle punkt1 punkt2)) (setq hypotenuse (distance punkt1 punkt2)) (setq ankathete (* hypotenuse (cos winkelalpha))) (setq gegenkathete (* hypotenuse (sin winkelalpha))) (alert (strcat "\n---------------------------------" "\nAbstand = "(rtos hypotenuse 2 4) "\n Delta X = "(rtos ankathete 2 4) "\n Delta Y = "(rtos gegenkathete 2 4) "\n---------------------------------" ) ; strcat ) ;_ alert
(princ (strcat "\nAbstand = " (rtos hypotenuse 2 4) "\t" "Delta X = " (rtos ankathete 2 4) "\t" "Delta Y = " (rtos gegenkathete 2 4) ) ) (princ) )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Time flies like an arrow, fruit flies like a banana (Groucho Marx)
|
erstellt am: 18. Jun. 2004 18:08 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
|
HBo Ehrenmitglied Maschinenbaukonstrukteur
Beiträge: 1563 Registriert: 31.12.2001
|
erstellt am: 20. Jun. 2004 19:16 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
Zitat: Original erstellt von mapcar:
........ - aber ein Zeichner, der mit permanent eingeschaltetem _NEA malt, kriegt bei mir sofort eine Abmahnung!Gruß, Axel
Abmahnung ist zu harmlos, ABER es gibt Berge von Zeichnungen die zu einer GENIALEN Zeit entstanden sind, durch ein paar GENIALE-Lisp-Tools die immer wieder den Objektfang NAE benutzt und anschließend eingestellt gelassen haben! Der arme User hat davon meist nichteinmal was bemerkt! Gruß HBo
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 21. Jun. 2004 09:19 <-- editieren / zitieren --> Unities abgeben:
Hallo Axel, Hallo HBo, kommt doch mal von dem "_nea" weg, hab das doch jetzt verstanden, obwohl bei uns im Rohrleitungsbau die zweite Stelle hinter dem Komma nicht so interessant ist ;-). Habe jetzt in dem Tool "_mid" eingesetz. Ich finde es schon ziemlich anmaßend hier von "Abmahnung" und "Abmahnung ist zu harmlos" zu sprechen, wenn man erstens noch nicht einmal einen Lösungsansatz zur gestellten Frage eingebracht hat und zweitens nicht weiß wen man vor sich hat:-(. Vieleicht könnte mir jetzt mal "wirklich" jemand weiterhelfen, ich möchte doch nur einen Code der "mir" das Arbeiten erleichtert. Hier noch mal mein Versuch, läuft aber leider noch nicht hundertprozentig. Gruß Jürgen ;;; die vielen setq's dienen nur zum besseren Verständnis ;;; ----------------------------------------------------- ;;; (defun c:mess (/ ankathete gegenkathete hypotenuse punkt1 punkt2 winkelalpha) (setq a (entsel "\nerstes Objekt wählen :")) (if (= a nil) (SETQ punkt1 (GETPOINT"\nersten Punkt wählen: "))) (setq b (entsel "\nzweites Objekt wählen :")) (if (= b nil) (SETQ punkt2 (GETPOINT"\nzweiten Punkt wählen: "))) (setq punkt1 (osnap (cadr a) "_mid")) (setq punkt2 (osnap (cadr b) "_mid")) (setq winkelalpha (angle punkt1 punkt2)) (setq hypotenuse (distance punkt1 punkt2)) (setq ankathete (* hypotenuse (cos winkelalpha))) (setq gegenkathete (* hypotenuse (sin winkelalpha))) (alert (strcat "\n---------------------------------" "\nAbstand = "(rtos hypotenuse 2 4) "\n Delta X = "(rtos ankathete 2 4) "\n Delta Y = "(rtos gegenkathete 2 4) "\n---------------------------------" ) ; strcat ) ;_ alert (princ (strcat "\nAbstand = " (rtos hypotenuse 2 4) "\t" "Delta X = " (rtos ankathete 2 4) "\t" "Delta Y = " (rtos gegenkathete 2 4) ) ) (princ) ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Time flies like an arrow, fruit flies like a banana (Groucho Marx)
|
erstellt am: 21. Jun. 2004 10:19 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
Ach Jürgen! > Ich finde es schon ziemlich anmaßend hier von "Abmahnung" ... zu > sprechen, wenn man erstens ... Ich gebe dir meine Erfahrungen weiter, ich weiss nämlich, wie das ist, wenn man feststellt, dass jemand Monate lang mit _NEA gearbeitet hat: Kaum eine Linie wirklich orthogonal, keine Ecke sauber verbunden, aber dann als Folgeerscheinung alle Maßzahlen gefälscht... Dass das andere (HBo) genauso sehen bzw. noch schärfer, sollte dir vielleicht zu denken geben. > noch nicht einmal einen Lösungsansatz zur gestellten Frage > eingebracht hat und zweitens ... Ich weiss nicht, wie oft ich mich wiederholen muss: Dieses Programm leistet nichts, was der Abstand-Befehl nicht auch leistet. Deinen Ansatz, ohne Ofang zu arbeiten, hast du inzwischen ja verworfen (du kannst zwar ohne Ofang erstmal klicken, aber er kommt ja dann doch über die osnap-Funktion, so oder so). Für den Fall, dass dein Ofang soooo langsam ist, habe ich dir auch Empfehlungen abgegeben, deine Zeichnungsstruktur mal zu untersuchen. Was also tue ich hier, als dir Lösungsansätze zur gestellten Frage zu liefern? > nicht weiß wen man vor sich hat:-(. Auch wenn du der Papst persönlich wärst, würde _NEA unpräzise Ergebnisse liefern. Da muss ich nun mal deutlich werden: So ein beknacktes Argument habe ich hier eigentlich noch nie gelesen! Nein, ich weiss nicht, wen ich vor mir habe - ich kann nur deinem Profil entnehmen, dass AutoCAD dein Hobby ist. Bei mir ist's jedenfalls eher der Beruf. Wen ich vor mir habe, ist mir auch grundsätzlich erstmal egal: Ich versuche hier, jedem ohne Ansehen der Person zu helfen, wenn mich das Thema irgendwie interessiert oder ich eine Lösung habe. Ich wünsche dir jedenfalls für die Zukunft viel Erfolg mit deinem Hobby. Gruß, Axel ------------------ Meine AutoLisp-Seiten Meine private Homepage Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze Meine Überzeugung... [Diese Nachricht wurde von mapcar am 21. Jun. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 21. Jun. 2004 11:45 <-- editieren / zitieren --> Unities abgeben:
Hallo Axel, >>Ich gebe dir meine Erfahrungen weiter, ich weiss.... Habe ich doch auch so verstanden und das in meinem Beitrag reingeschrieben. Deine und HBo's Bedenken mit "_nea" sind vollkommen richtig. >>Ich weiss nicht, wie oft ich mich wiederholen muss:...... Natürlich hast du mir Ansätze geliefert. Habe dann doch auch anstatt "_nea" "_mid" eingebaut und kann jetzt einfach zwei Linien anklicken und bekomme doch durch "_mid" zwei genaue Punkte geliefer, also einen genauen Wert, oder ? Das einbauen der getpoint Funktion dient nur dazu, was bei mir sehr selten vorkommt, wenn ich die Länge einer Linie mit Endp Endp messen muß, aber das hätte ich gerne in einem Dialogfels (alert) angezeigt und nicht in der Befehlszeile. >>Auch wenn du der Papst persönlich wärst..... keine Angst ich bin nicht der Papst, habe mich halt ein wenig in meiner Berufsehre angegriffen gefühlt. Aber wie der Kanzler sagt: Wir sollten uns nicht bei einer "Sachfrage" persönlich Streiten. Deine Beweggründe an diesem Forum teilzunehmen sind ja OK, bei mir ist es das gleiche. Werde mein Profil selbstverständlich auch mal anpassen und ich habe mein Beruf zu meinem Hobby gemacht, ist doch sicher bei dir genauso. Auf jedenfall danke Axel Benwisch und Hbo für eure Beiräge Gruß Jürgen [Diese Nachricht wurde von Jürgen Scheeren am 21. Jun. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 21. Jun. 2004 15:06 <-- editieren / zitieren --> Unities abgeben:
Hallo (bis jetzt) 192 Mitinteressierte, zum Anschauen und (vieleicht) weiterdiskutieren, meine zwar funktionierende aber natürlich nicht perfekte Lösung. Das Programm dient dazu den Abstand zweier paralleler Linie on the Fly zu messen. Durch die Funktion "_mid" stimmen alle abgegriffenen Maße auch mit entsel. Wer _dist benutzen will braucht bei der ersten Abfrage "erstes Objekt wählen :" nur die rechte Maustaste zu drücken. Gruß Jürgen hier der Code: (defun c:mess (/ ankathete gegenkathete hypotenuse punkt1 punkt2 winkelalpha)
(setq a (entsel "\nerstes Objekt wählen :")) (if (= a nil) (command "_dist")) (setq punkt1 (osnap (cadr a) "_mid")) (setq b (entsel "\nzweites Objekt wählen :")) (setq punkt2 (osnap (cadr b) "_mid")) (setq winkelalpha (angle punkt1 punkt2)) (setq hypotenuse (distance punkt1 punkt2)) (setq ankathete (* hypotenuse (cos winkelalpha))) (setq gegenkathete (* hypotenuse (sin winkelalpha))) (alert (strcat "\n---------------------------------" "\nAbstand = "(rtos hypotenuse 2 4) "\n Delta X = "(rtos ankathete 2 4) "\n Delta Y = "(rtos gegenkathete 2 4) "\n---------------------------------" ) ; strcat ) ;_ alert (princ (strcat "\nAbstand = " (rtos hypotenuse 2 4) "\t" "Delta X = " (rtos ankathete 2 4) "\t" "Delta Y = " (rtos gegenkathete 2 4) ) ) ) [Diese Nachricht wurde von Jürgen Scheeren am 21. Jun. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 21. Jun. 2004 16:46 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
(DEFUN c:as ( / e1 e2 anfp1 richt1 ) (SETQ e1 (ENTGET (CAR (ENTSEL "\nerste Linie wählen: "))) e2 (ENTGET (CAR (ENTSEL "\nzweite Linie wählen: "))) anfp1 (CDR(ASSOC 10 e1)) richt1 (+ (ANGLE anfp1 (CDR(ASSOC 11 e1))) (/ pi 2)) ) (ALERT (STRCAT "Abstand: " (RTOS (DISTANCE anfp1 (INTERS anfp1 (POLAR anfp1 richt1 1) (CDR(ASSOC 10 e2)) (CDR(ASSOC 11 e2)) nil)) 2 2))) (PRINC) ) ciao georg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 22. Jun. 2004 09:07 <-- editieren / zitieren --> Unities abgeben:
Hallo Georg, vielen Dank für deinen Beitrag, dein Prog funzt ziemlich gut, kann den Code als Gelegenheits-Lisp-Verstümmler aber nicht richtig deuten. Ist es so, dass das Prog einen Punkt nimmt, dann über die Funktion Angel den kürzesten Weg ermittelt? Die ermittelten Werte sehen ziemlich genau aus. Kannst du mir ein paar Worte dazu Schreiben? Gruß Jürgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 22. Jun. 2004 09:38 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
-angle berechnet den richtungswinkel der ersten gerade -richt1 + pi/2 dreht den winkel um 100gon -polar ergibt einen punkt senkrecht zur ersten gerade im anfangspunkt der ersten gerade -inters berechnet den schnittpunkt der senkrechten und der zweiten gerade -distance berechnet den abstand schnittpunkt - anfangspunkt (=abstand der geraden) ich würde an deiner stelle aber, egal welchen code du verwendest, erst mal prüfen ob die geraden überhaupt parallel sind (equal). ciao georg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 22. Jun. 2004 09:59 <-- editieren / zitieren --> Unities abgeben:
Hallo Georg, vielen dank für die Erklärung. Das Prog ist nur für parallele gedacht, das waren meine eigentlichen Beweggründe für so ein Prog und über die Genauigkeit brauche ich mir auch keine Gedanken zu machen, da kein "_nea" . Da ich das Prog auf den Button von _dist legen möchte und auch keinen weiteren Button anlegen möchte, ist es mölich den Befehl _dist aus deinem Prog zu Starten. Möchte gerne nach der ersten Abfrage "erste Linie wählen:" die rechte Maustaste drücken, dann wird _dist aufgerufen. Mit(if (= e1 nil) (command "_dist")) bin ich bei deinem Prog ziemlich erfolglos. Gruß Jürgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
otterloh Mitglied
Beiträge: 188 Registriert: 27.06.2001 AutoCAD 2008, 2010 Vista, Win7
|
erstellt am: 22. Jun. 2004 10:13 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
Jürgen, leider mit O'fang, aber genau. (defun c:AbDist (/ ra rm xy) (setq aosm (getvar "osmode")) (setvar "osmode" 1) (setq ra (getpoint "\n1. Linie wählen ... weiter zu DIST mit Return: ")) (if ra (progn (setvar "osmode" 512) (setvar "lastpoint" ra) (setq rm (osnap (getpoint ra "\n2. Linie wählen: ") "_per")) (setq xy (distance ra rm)) (princ xy) (setvar "osmode" aosm) ) (command "._dist") ) (princ) ) ------------------ Gruß Werner http://Meyer-Werner.bei.T-Online.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 22. Jun. 2004 10:37 <-- editieren / zitieren --> Unities abgeben:
Hallo Werner, vielen dank für Deinen Beitrag, dein Prog ist natürlich eine Punktlandung. Möchte aber erst noch ausprobieren ob ich es mit entsel hinbekomme. Du hast mir aber den richtigen Ansatz für das Aufrufen des DIST Befehls gegeben, kriegs aber trotzdem noch nicht hin, was mach ich falsch?? Gruß Jürgen (DEFUN c:as ( / e1 e2 anfp1 richt1 ) (princ "\n>>>>>nur parallele Linien messen<<<<<") (SETQ e1 (ENTGET (CAR (ENTSEL "\nerste Linie wählen <... weiter zu DIST mit Return>: ")))) (if e1 (progn (SETQ e2 (ENTGET (CAR (ENTSEL "\nzweite Linie wählen: ")))) (SETQ anfp1 (CDR(ASSOC 10 e1))) (SETQ richt1 (+ (ANGLE anfp1 (CDR(ASSOC 11 e1))) (/ pi 2))) (ALERT (STRCAT "Abstand: " (RTOS (DISTANCE anfp1 (INTERS anfp1 (POLAR anfp1 richt1 1) (CDR(ASSOC 10 e2)) (CDR(ASSOC 11 e2)) nil)) 2 2))) ) (command "_dist") ) (PRINC) ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 22. Jun. 2004 11:19 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
(DEFUN c:as ( / ele e1 e2 anfp1 ) (SETQ ele (CAR (ENTSEL "\nerste Linie wählen (_dist mit enter) : "))) (IF ele (PROGN (SETQ e1 (ENTGET ele) e2 (ENTGET (CAR (ENTSEL "\nzweite Linie wählen: "))) anfp1 (CDR(ASSOC 10 e1)) ) (ALERT (STRCAT "Abstand: " (RTOS (DISTANCE anfp1 (INTERS anfp1 (POLAR anfp1 (+ (ANGLE anfp1 (CDR(ASSOC 11 e1))) (/ pi 2)) 1) (CDR(ASSOC 10 e2)) (CDR(ASSOC 11 e2)) nil)) 2 2))) ) ;progn (COMMAND "_dist") ) (PRINC) ) lies mal in der hilfe was die funktionen entsel und entget zurückgeben, dann wirst du merken warum deine if-funktion nicht geht. ciao georg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 22. Jun. 2004 11:41 <-- editieren / zitieren --> Unities abgeben:
Hallo Georg, vielen Dank, das ist es :-). War ne lange Diskusion, aber erfolgreich spannend und hab viel gelehrnt über _nea, ensel und entget. Ihr seid die Besten, werde reichlich Units verteilen. Danke nochmal Georg und Werner. Gruß Jürgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|