|  |  | 
|  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | 
|  |  | 
|  | Jetzt verfügbar: NVIDIA RTX PRO 6000 Blackwell Server Edition, eine Pressemitteilung 
 | 
| Autor | Thema:  Bögen mit start end und 3.punkt (1911 mal gelesen) | 
 | c.schojer Mitglied
 
 
   
 
      Beiträge: 299Registriert: 23.05.2007
 Autocad 2018 |    erstellt am: 12. Jul. 2007 16:59  <-- editieren / zitieren -->    Unities abgeben:            | 
                        | Carsten1210 Mitglied
 staatl. geprüfter Holztechniker
 
     
 
      Beiträge: 1362Registriert: 24.07.2002
 |    erstellt am: 12. Jul. 2007 17:25  <-- editieren / zitieren -->    Unities abgeben:           Nur für c.schojer   
  Hi Chris, Schnell gehts über Sendcommand.    Du kannst Bögen in VBA nur über addarc mit Angabe vom Zentrum, Radius und Start- und Enwinkel Zeichnen. Da müsstest du dir die Punkte und dafür berechen. Gruß, Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | c.schojer Mitglied
 
 
   
 
      Beiträge: 299Registriert: 23.05.2007
 Autocad 2018 |    erstellt am: 13. Jul. 2007 07:08  <-- editieren / zitieren -->    Unities abgeben:            
  Also ich brauchte das ganze mit den Koordinaten denn ich will den erstellten Bogen dann auch noch zu ner Polylinie hinzufügen! Hat da einer ne Idee wie man das schnell lösen kann??? (ps ich will ne weiche Wärmedämmung programmieren (WD-Keil)will aber nicht die Lisp Tools verwenden die im Umlauf sind)
 Mfg Chris [Diese Nachricht wurde von c.schojer am 13. Jul. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Carsten1210 Mitglied
 staatl. geprüfter Holztechniker
 
     
 
      Beiträge: 1362Registriert: 24.07.2002
 |    erstellt am: 13. Jul. 2007 10:30  <-- editieren / zitieren -->    Unities abgeben:           Nur für c.schojer   | 
                        | Stelli1 Moderator
 Verm.-Ing.
 
      
 
      Beiträge: 1526Registriert: 17.08.2005
 Map 2000-2014, Rasterdesign,MapGuide, Autodesk Topobase,
 VS6, VS.net 2013
 |    erstellt am: 13. Jul. 2007 12:26  <-- editieren / zitieren -->    Unities abgeben:           Nur für c.schojer   
  Hallo Chris, warum erzeugst du nicht gleich eine Polylinie.Hab das mal ein wenig zusammenkopiert.
 Klappt aber
   
 Code:Option Explicit
 Type Fpunkttyp
 Rechtswert As Double
 Hochwert As Double
 End Type
 Sub Bogensegment()     Dim p1 As VariantDim p2 As Variant
 Dim p3 As Variant
 
 Dim Punkte(0 To 3) As Double
 Dim FPunkte(1 To 3) As Fpunkttyp
 
 Dim a As Double, b As Double, c As Double
 Dim p As Double, h As Double
 Dim bulge As Double
 
 Dim Bogen As AcadLWPolyline
 
 On Error GoTo exit_sub
 p1 = ThisDrawing.Utility.GetPoint(, Chr$(10) & "1. Punkt:")
 p2 = ThisDrawing.Utility.GetPoint(, Chr$(10) & "2. Punkt:")
 p3 = ThisDrawing.Utility.GetPoint(, Chr$(10) & "3. Punkt:")
 On Error GoTo 0
 
 ' Strecken berechnen
 a = Sqr((p2(0) - p1(0)) ^ 2 + (p2(1) - p1(1)) ^ 2)
 b = Sqr((p3(0) - p2(0)) ^ 2 + (p3(1) - p2(1)) ^ 2)
 c = Sqr((p3(0) - p1(0)) ^ 2 + (p3(1) - p1(1)) ^ 2)
 
 ' Fusspunkt
 p = (c ^ 2 + a ^ 2 - b ^ 2) / (2 * c)
 ' Höhe von Strecke P1->P3 zum Punkt P2
 h = Sqr(a ^ 2 - p ^ 2)
 
 ' Koordinaten der Polylinie (P1->P3)
 Punkte(0) = p1(0)
 Punkte(1) = p1(1)
 Punkte(2) = p3(0)
 Punkte(3) = p3(1)
 
 Dim o As Double
 Dim x As Double
 Dim r As Double
 ' Versatz P1->P3 zum Kreismittelpunkt
 o = c / 2 - p
 x = (c ^ 2 / 4 - h ^ 2 - o ^ 2) / (2 * h)
 r = Sqr((h + x) ^ 2 + o ^ 2)
 ' R-x = Höhe des Bogens zum Scheitelpunkt
 
 ' Punkte für Flächenberechnung
 FPunkte(1).Rechtswert = p1(0)
 FPunkte(1).Hochwert = p1(1)
 FPunkte(2).Rechtswert = p2(0)
 FPunkte(2).Hochwert = p2(1)
 FPunkte(3).Rechtswert = p3(0)
 FPunkte(3).Hochwert = p3(1)
 
 ' Ausbiegung gleich Verhältnis Höhe zur halben Sehne
 bulge = (r - x) / (c / 2)
 ' Richtung (Fläche positiv liegt der Punkt links, negativ leigt der Punkt rechts)
 bulge = bulge * Sgn(gauss_area(FPunkte)) * -1
 ' Polylinie Zeichnen
 Set Bogen = ThisDrawing.ModelSpace.AddLightWeightPolyline(Punkte)
 Bogen.color = acBlue
 Bogen.SetBulge 0, bulge
 Bogen.Update
 
 exit_sub:
 End Sub
 Public Function gauss_area(Punkte() As Fpunkttyp) As Double' Berechnet die Fläche eines Polygons, das durch
 ' Punktkoordinaten gegeben ist
 Dim i As Integer
 Dim Area As Double
 Dim Punktanzahl As Long
 Dim xs As Double, ys As Double, xa As Double, ya As Double
 
 Punktanzahl = UBound(Punkte)
 xs = Punkte(1).Hochwert
 ys = Punkte(1).Rechtswert
   For i = 1 To Punktanzahlxa = Punkte(i).Hochwert
 ya = Punkte(i).Rechtswert
 
 Area = Area + (ys + ya) * (xs - xa)
 
 xs = xa
 ys = ya
 Next i
 
 ' der letzte Punkt ist wieder der erste Punkt
 xa = Punkte(1).Hochwert
 ya = Punkte(1).Rechtswert
 
 Area = Area + (ys + ya) * (xs - xa)
 
 ' Rückgabewert
 gauss_area = Area / 2
 End Function
 
 
 Wilfried Stelberg
 ------------------Warum lisp'eln wenn's auch anders geht.
   www.ib-stelberg.de
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                       
| 
  
 |  | 
 | c.schojer Mitglied
 
 
   
 
      Beiträge: 299Registriert: 23.05.2007
 Autocad 2018 |    erstellt am: 19. Jul. 2007 09:42  <-- editieren / zitieren -->    Unities abgeben:            |