| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: Tangente an Spline bzw. Steigung im Endpunkt (2474 / mal gelesen)
|
Markmark Mitglied
Beiträge: 4 Registriert: 11.01.2017 Windows 8.1 Pro AutoCAD 2011
|
erstellt am: 11. Jan. 2017 10:38 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, dies ist mein erstes Posting in diesem Forum. Mein Wissensstand bzgl. Autocad kann man wohl gut mit "gefährliches Halbwissen" beschreiben, eher darunter. Möglicherweise ist meine Frage also auf eine komplett falsche "Denke" zurückzuführen. Es handelt sich letztendlich um die Konstruktion eines harmonischen Verlaufs für eine Treppenwange. Ich habe einige Punkte auf einer geraden Linie - im Anschluss folgen zwei Punkte, die abseits dieser Linie liegen (Krümmung der Wange im unteren Teil). Die letzten drei Punkte verbinde ich mit einem Spline. Den Anschluss an die darüber liegenden Punkte "auf einer Line" erhalte ich, indem ich den Spline tangential erweiter (Splineedit -> Anpassungsdaten -> Tangenten). Ich möchte nun auch das andere Ende des Splines mit identischer Steigung weiterlaufen lassen. Also durch Anschluss einer Linie, deren Steigung der Steigung des Splines im Endpunkt entspricht bzw. durch eine Tangente an den Endpunkt des Splines. Ich habe hierzu keine Möglichkeit gefunden. Hilfsweise würde es mir genügen, die Steigung des Splines im Endpunkt zu kennen. Danke für eure Hilfe vorab. Viele Grüße Mark Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
scj Mitglied
Beiträge: 555 Registriert: 09.08.2001
|
erstellt am: 11. Jan. 2017 16:20 <-- editieren / zitieren --> Unities abgeben: Nur für Markmark
Hallo Markmark, wenn Du etwas VisualLisp beherrschst, kannst Du mal vlax-curve-getFirstDeriv Returns the first derivative (in WCS) of a curve at the specified location versuchen. (Beschreibung in der Hilfe in der VLIDE-Umgebung) Beste Grüße Jochen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RL13 Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Bauwesen
Beiträge: 2373 Registriert: 23.10.2008 Civil 3D 2018.1 Civil 3D 2016 64 Bit SP 3 mit DACH und Extensions W7 Professional 64Bit HP Z440 Intel Xeon CPU E5-1620 v4 32 GB RAM NVIDIA Quadro P4000
|
erstellt am: 11. Jan. 2017 16:22 <-- editieren / zitieren --> Unities abgeben: Nur für Markmark
Hallo Markmark, wenn Du den Befehl ausführst SPLINEEDIT -> ANPASSUNGSDATEN -> TANGENTEN werde ich in AutoCAD 2016 nacheinander nach 2 Punkten auf den anschließenden Linien (Tangenten) an beiden Enden des Splines gefragt. Insofern kann ich kein Problem erkennen, warum bei Dir der tangentiale Anschluss des Splines nur an eine Seite möglich sein soll, es sei denn das Feature wurde erst nach AutoCAD 2011 eingeführt ------------------ mfg Roman Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Markmark Mitglied
Beiträge: 4 Registriert: 11.01.2017 Windows 8.1 Pro AutoCAD 2011
|
erstellt am: 11. Jan. 2017 16:40 <-- editieren / zitieren --> Unities abgeben:
@Jochen, danke für den Hinweis auf Lisp. Das werde ich mir anschauen, sofern es tatsächlich keine einfachere Lösung gibt. Da hätte ich noch einige Schritte auf der Lernkurve zu gehen. @Roman, ja, das ist richtig und genau so, wie du es formuliert hast. Wenn ich den Spline tangential an einen weiteren Punkt "anschließen" möchte, kann ich das auf diesem Weg erreichen. Meine Aufgabe ist aber eine andere. Der Punkt, an den ich den Spline "anschließen" möchte, kenne ich noch nicht. Vielmehr möchte ich den "fertigen" Spline tangential verlängern, bis sich ein Schnittpunkt mit einer anderen Linie ergibt. Das könnte man natürlich "nach Augenmaß" mit der obigen Funktionalität erreichen, aber dass kann ja nicht der Sinn der Sache sein. Hilfsweise würde mir dazu - wie gesagt - die Steigung im Endpunkt des Splines genügen. Ich hoffe, ich konnte das Problem deutlich machen. Ich kann zusätzlich gerne auch eine Skizze erstellen und anhängen. Dank vorab. Mark Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
scj Mitglied
Beiträge: 555 Registriert: 09.08.2001
|
erstellt am: 11. Jan. 2017 17:45 <-- editieren / zitieren --> Unities abgeben: Nur für Markmark
|
Markmark Mitglied
Beiträge: 4 Registriert: 11.01.2017 Windows 8.1 Pro AutoCAD 2011
|
erstellt am: 11. Jan. 2017 18:56 <-- editieren / zitieren --> Unities abgeben:
Jochen, danke. Ich habe das letzte Skript in dem verlinkten Post an's Laufen gebracht. Wenn ich ein Spline auswähle, bekomme ich 3 Werte angezeigt. Ich habe aus der Aufgabenstellung verstanden, dass diese 3 Werte ein BKS beschreiben, welches senkrecht auf dem Endpunkt des Splies liegt. Ist das richtig? Ich muss offen gestehen, dass ich nicht eine Zeile des Codes verstehe - das ist mit eigentlich noch bei keiner Sprache zuvor passiert. Gruß Mark Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22298 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 11. Jan. 2017 20:19 <-- editieren / zitieren --> Unities abgeben: Nur für Markmark
Die Rückgabe-Liste mit den drei Werten beschreibt einen Punkt im WeltKoordinatenSystem/WKS (X-Wert Y-Wert Z-Wert) Code: ; von scj aus dem Post - Klick! (defun C:Splinanst () ; Erweiterte Funktionen des VisualLisp laden (vl-load-com) ; Das Objekt wählen und merken (setq splin-obj (vlax-ename->vla-object (car(entsel "\nSpline wählen:")))) ; vlax-curve-GetFirstDeriv vom gewählten Objekt, ausgehend vom STARTpunkt ermitteln ; Hier der Link zur Funktion in der Hilfe: ; http://help.autodesk.com/view/ACD/2017/DEU/?guid=GUID-37282EB1-D47C-4039-B1AF-744EB5 B53F25 (setq abl (vlax-curve-GetFirstDeriv splin-obj (vlax-curve-GetStartParam splin-obj))) ; in diesem Teil wird nur die Eingabe für den Endpunkt der LINIE berechnet, ; ; um den Vektor, ausgehend vom Startpunkt der Spline, zu visualisieren ; ; ab hier ist der Beispielcode nicht mehr Hieb&Stichfest, soll nur schnell ein ; Ergebnis am Bildschirm darstellen (Problematik "aktuelles BKS" sowie "Objektfang" sind nicht berücksichtigt) (setq fak 100 pt (car (list (strcat "@" (rtos (* fak (car abl))) "," (rtos (* fak (cadr abl))) "," (rtos (* fak (caddr abl)) ))))) ; Linie erzeugen, zwischen Startpunkt der Spline und ermitteltem Koordinatenpunkt auf dem Vektor ; ================================================ (command ;übergebe an die Befehlszeile folgende Eingaben: "_Line" ; _Line starten den Befehl Linie / englisch Line / international _Line (vlax-curve-GetStartPoint splin-obj) ; als ersten Punkt: den Startpunkt der Spline übergeben pt ; den mühsam erstellten Tastatur-Eingabewert für den Endpunkt der Linie übergeben "" ; Leereingabe (=Enter), beendet den Befehl Linie ) ; ================================================ ; Der ermittelte Vektor (im WKS) wird in der Befehlszeile ohne weitere Funktion ausgegeben abl )
Zur Visualisierung und als Beispiel für den Nutzen wurde hier kein BKS erstellt, sondern eine Linie erzeugt.
Code: ; Im Austausch ein Beispiel mit BKS und Kreis: ; ================================================ (command "_UCS" "_w" "_UCS" "_ZA" (vlax-curve-GetStartPoint splin-obj) PT "_CIRCLE" "0,0" (/ (vlax-curve-getDistAtPoint splin-obj (vlax-curve-getEndPoint splin-obj)) 30) ) ; ================================================
------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Markmark Mitglied
Beiträge: 4 Registriert: 11.01.2017 Windows 8.1 Pro AutoCAD 2011
|
erstellt am: 12. Jan. 2017 08:16 <-- editieren / zitieren --> Unities abgeben:
@Jochen & cadffm, großartig, das hat funktioniert! Vielen Dank für das Skript und die ergänzenden Erläuterungen. Als Newbe hat mich doch überrascht, welchen Aufwand man für eine auf den ersten Blick triviale Aufgabenstellung treiben muss. Wobei das ja letztendlich übersichtlich war, sofern man sich auskennt. Ihr habt mir wirklich sehr geholfen! Gruß Mark Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RL13 Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Bauwesen
Beiträge: 2373 Registriert: 23.10.2008 Civil 3D 2018.1 Civil 3D 2016 64 Bit SP 3 mit DACH und Extensions W7 Professional 64Bit HP Z440 Intel Xeon CPU E5-1620 v4 32 GB RAM NVIDIA Quadro P4000
|
erstellt am: 12. Jan. 2017 09:39 <-- editieren / zitieren --> Unities abgeben: Nur für Markmark
|