| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | NVIDIA RTX PRO 6000 Blackwell Max-Q Workstation Edition, eine Pressemitteilung
|
Autor
|
Thema: Spline mit AddSpline anstelle Command (1594 mal gelesen)
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung und AutoLISPler
    
 Beiträge: 1781 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 07. Aug. 2013 16:32 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich möchte einen ganz einfachen, geschlossenenen Spline über 4 Punkte zeichnen. Wenn ich die Command-Variante verwende sieht das auch super aus, wenn ich 'AddSpline verwende weiß ich nicht, wie ich die StartTangente und die EndTangente genau berechnen soll. Weiß einer von Euch, was ich ändern muss, damit das Ergebnis wie bei der Command-Variante aussieht? Bin wie immer dankbar für jeden Tipp. Code:
(defun c:test ( / KOORDS SPLINE STG) (setq koords '( (1.10701333 3.87994861 0.00000000) (1.32766652 0.68599930 0.00000000) (4.49215068 0.20015987 0.00000000) (4.27149750 3.39410918 0.00000000))) ;;;Spline über Command (command "_.spline" (car koords) (cadr koords) (caddr koords) (cadddr koords) "_c" "") ;;;Spline über AddSpline (setq spline (vlax-invoke (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)) ) 'AddSpline (apply 'append (append koords (list (car koords)))) '(0.0 0.0 0.0) '(0.0 0.0 0.0))) (setq stg (vlax-curve-getFirstDeriv spline 0)) (vlax-put spline 'StartTangent stg) (vlax-put spline 'EndTangent stg) )
------------------ viele Grüße Jörn http://www.bosse-engineering.com Kordinaten einlesen Youtube Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
       

 Beiträge: 13533 Registriert: 30.11.2003 .
|
erstellt am: 07. Aug. 2013 21:28 <-- editieren / zitieren --> Unities abgeben:          Nur für joern bosse
(setq Points nil) (setq koords '((1.10701333 3.87994861 0.00000000) (1.32766652 0.68599930 0.00000000) (4.49215068 0.20015987 0.00000000) (4.27149750 3.39410918 0.00000000) ) ) (foreach K (reverse KOORDS) (setq POINTS(cons (caddr K)POINTS)) (setq POINTS(cons (cadr K)POINTS)) (setq POINTS(cons (car K)POINTS)) ) (setq KOORDS (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble (cons 0 (1- (length POINTS)))) POINTS ) ) (setq Starttan (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble (cons 0 2)) '(0 1 0) ) ) (setq Endtan (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble (cons 0 2)) '(0 1 0) ) ) (setq spline (vla-addspline (vla-get-ModelSpace(vla-get-ActiveDocument (vlax-get-acad-object))) KOORDS Starttan Endtan ) ) ------------------ Also ich finde Unities gut ... und andere sicher auch ---------------------------------------
- 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 |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung und AutoLISPler
    
 Beiträge: 1781 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 08. Aug. 2013 07:01 <-- editieren / zitieren --> Unities abgeben:         
Hallo Thomas, danke erstmal für Deine Antwort, leider komme ich damit noch nicht weiter. Ich habe eine DWG-Datei angehängt, in der die verschiedenen Versionen der Splines enthalten sind: Rot = Command Gelb = AddSpline mit StartTangente (0 0 0) und EndTangente (0 0 0), nachträglich über vlax-curve-getFirstDeriv die Tangentenwerte geändert Grün = AddSpline von CADmium mit StartTangente (0 1 0) und EndTangente (0 1 0) (um den Spline zu schließen müßte ich nur den Ersten Punkt der Koordinatenliste an das Ende Appenden) Über Entget habe ich die Sollwerte der Command-Variante (rot) für die Tangenten: StartTangente(-0.622618 -0.782526 0.0) EndTangente(-0.622618 -0.782526 0.0) Wie werden diese Werte berechnet??? ------------------ viele Grüße
Jörn http://www.bosse-engineering.com Kordinaten einlesen Youtube [Diese Nachricht wurde von joern bosse am 08. Aug. 2013 editiert.] [Diese Nachricht wurde von joern bosse am 08. Aug. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten

 Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 08. Aug. 2013 13:56 <-- editieren / zitieren --> Unities abgeben:          Nur für joern bosse
Hallo Jörn, [nur als Hinweis] im Normalfall würde ich sagen, die Start- und Endtangente ist die Lotrechte auf die Winkelhalbierende des Winkels letzter_Punkt - erster_Punkt - zweiter_Punkt. Das scheint aber erst ab 2013 der Fall zu sein, jedenfalls stimmt es in Deiner Zeichnung auch nicht bei der roten Spline, wenn ich ab 2013 eine Spline zeichne und mit Schließen beende, aber schon. Grüsse, Henning ------------------ Henning Jesse VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung und AutoLISPler
    
 Beiträge: 1781 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 08. Aug. 2013 14:50 <-- editieren / zitieren --> Unities abgeben:         
Hallo Henning, danke für Deinen Hinweis. Ich habe jetzt die Winkelhalbierende genommen, es ergibt sich ein gefälliges Bild, die Abweichungen zu dem "Command"-Spline halten sich in Grenzen (ich brauch das für eine Baumkronendarstellung, da ist schick wichtiger als genau) Code:
(defun c:test2 ( / Points) (setq koords '((1.10701333 3.87994861 0.00000000) (1.32766652 0.68599930 0.00000000) (4.49215068 0.20015987 0.00000000) (4.27149750 3.39410918 0.00000000) )) (setq mp(polar (car koords) (angle (car koords)(caddr koords)) (/(distance (car koords)(caddr koords))2.0)) tangente (mapcar '-(polar (last koords) (angle (last koords) mp) 1.0) (last koords))) (vlax-invoke (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)) ) 'AddSpline (apply 'append (append koords (list (car koords)))) tangente tangente) )
------------------ viele Grüße Jörn http://www.bosse-engineering.com Kordinaten einlesen Youtube [Diese Nachricht wurde von joern bosse am 08. Aug. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |