Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Lot auf eine Linie

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:  Lot auf eine Linie (1598 mal gelesen)
schmodi
Mitglied
Metallbaukonstrukteur


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

Beiträge: 57
Registriert: 20.05.2007

Autodesk Architecural Desktop 2007
Windows XP Professional Version 2002 SP2
Pentium 1.7 MHZ, 1 GB Ram

erstellt am: 26. Nov. 2007 17:31    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 habe ein weiteres Problem. Ich habe einen Punkt in einer Double Variabel gespeichert. Von diesem Punkt aus möchte ich einen Punkt auf einer Linie bestimmen. Der Punkt auf der Linie sollte im Lot von dem Punkt in der Double Variabel sein. Habe einen Forums Beitrag gefunden aber leider konnte ich den Link nicht öffnen. Ich hoffe Ihr könnt mir weiterhelfen. Vielen dank.

Gruss Schmodi

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 27. Nov. 2007 22:46    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 schmodi 10 Unities + Antwort hilfreich

Hallo Schmodi,
beiliegend ein kleines Beispiel wie so was ( 2-Dimensional ) aussehen könnte.
Program frägt zunächst einen Punkt ab,
anschließend ist die Linie zu tippen
(ohne großen Aufwand geschrieben, deshalb auch keine Fehlerabfrage)
Nun wird der Lotabstand ( sp ) über die Dreiecksseiten gerechnet
anschließend der neue Punkt
und vom getippten Punkt aus eine Linie gezeichnet.
Denke Du kannst damit Deine gewünschte Funktion basteln.

Grüße,
Klaus

Code:

Sub LotPunkt()
  ' Begin the selection
    Dim returnObj As AcadObject
    Dim basePnt As Variant
    Dim lineobj As AcadLine
    Dim returnPnt As Variant
    Dim startPnt(0 To 2) As Double
    Dim endPnt(0 To 2) As Double
    Dim neuPnt(0 To 2) As Double
    Dim dx As Double, dy As Double
    Dim sa As Double, sb As Double, sc As Double
    Dim sp As Double
   
   
    On Error Resume Next
   
    ' The following example waits for a selection from the user
RETRY:
    ' Return a point using a prompt
    returnPnt = ThisDrawing.Utility.GetPoint(, "Enter a point: ")
   
    ThisDrawing.Utility.GetEntity returnObj, basePnt, "Select an object"
    If Err <> 0 Then
        Err.Clear
        MsgBox "Program ended.", , "GetEntity Example"
        Exit Sub
    End If
   
    Set lineobj = returnObj
    startPnt(0) = lineobj.startPoint(0)
    startPnt(1) = lineobj.startPoint(1)
    startPnt(2) = lineobj.startPoint(2)
    endPnt(0) = lineobj.endPoint(0)
    endPnt(1) = lineobj.endPoint(1)
    endPnt(2) = lineobj.endPoint(2)
   
    dx = endPnt(0) - returnPnt(0)
    dy = endPnt(1) - returnPnt(1)
    sb = (dx * dx) + (dy * dy)
    dx = returnPnt(0) - startPnt(0)
    dy = returnPnt(1) - startPnt(1)
    sa = (dx * dx) + (dy * dy)
    dx = endPnt(0) - startPnt(0)
    dy = endPnt(1) - startPnt(1)
    sc = Sqr((dx * dx) + (dy * dy))
    sp = (sa - sb + sc * sc) / (2 * sc)
   
    neuPnt(0) = startPnt(0) + dx * sp / sc
    neuPnt(1) = startPnt(1) + dy * sp / sc
    neuPnt(2) = startPnt(2) + (endPnt(2) - startPnt(2)) * sp / sc
   
    Set lineobj = ThisDrawing.ModelSpace.AddLine(returnPnt, neuPnt)
   
    GoTo RETRY

End Sub


[Edit] Für eine 3D berechnung müsste noch jeweils ein dz eingefügt werden [/Edit]

[Diese Nachricht wurde von KlaK am 27. Nov. 2007 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

c.schojer
Mitglied



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

Beiträge: 299
Registriert: 23.05.2007

Autocad 2018

erstellt am: 02. Dez. 2007 19:12    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 schmodi 10 Unities + Antwort hilfreich

Hey Klasse wollte so ein Programm gerade erst schreiben
für Distanzabmessungen von nem geklickten punkt
Danke!
Mfg Chris

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