Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Spline mit AddSpline anstelle Command

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Spline mit AddSpline anstelle Command (1294 mal gelesen)
joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 07. Aug. 2013 16:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 07. Aug. 2013 21:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für joern bosse 10 Unities + Antwort hilfreich

(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


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 08. Aug. 2013 07:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


JB_Spline_dwg.txt

 
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



Sehen Sie sich das Profil von wronzky an!   Senden Sie eine Private Message an wronzky  Schreiben Sie einen Gästebucheintrag für wronzky

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für joern bosse 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 08. Aug. 2013 14:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz