| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | |  | Von Digital Twins bis Hochleistungs-Computing: PNY präsentiert seine Zukunftstechnologien für die Industrie von morgen, eine Pressemitteilung
|
Autor
|
Thema: Linie auswählen mit VBA (3057 mal gelesen)
|
Soldnerkugel Mitglied
 
 Beiträge: 131 Registriert: 29.01.2010 Win 7, AutoCAD Civil 3D 2015, SketchUp, CarlsonSurvCE
|
erstellt am: 02. Jun. 2010 10:26 <-- editieren / zitieren --> Unities abgeben:         
Hallo, wie kann ich denn am Bildschirm EINE Linie auswählen? es gibt die "AutoCAD-Selection Sets" für Linien, aber ich will nur eine Linie auswählen. Es gibt für die Auswahl eines Punktes ja auch ThisDrawing.Utility.GetPoint(, "Punkt ausaewhlen: ") gibt's da evtl. auch sowas wie "ThisDrawing.Utility.GetLine" (gibt's natürlich nicht...ich weiß). Ich möchte ja nur eine einzige Linie auswählen (und von dieser im Anschluss Start- und Endpunkt für weitere Berechnungen verwenden)
------------------ http://www.stupidedia.org/stupi/Rechter_Winkel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
       

 Beiträge: 13530 Registriert: 30.11.2003 ACAD 2008 Mechanical
|
erstellt am: 02. Jun. 2010 10:35 <-- editieren / zitieren --> Unities abgeben:          Nur für Soldnerkugel
|
Soldnerkugel Mitglied
 
 Beiträge: 131 Registriert: 29.01.2010 Win 7, AutoCAD Civil 3D 2015, SketchUp, CarlsonSurvCE
|
erstellt am: 02. Jun. 2010 10:52 <-- editieren / zitieren --> Unities abgeben:         
ja, daran habe ich auch schon gedacht, aber ich würde gerne Anfangs- und Endpunkt der Line haben (X,Y,Z-Koordinaten). bei .GetEntity finde ich da leider keine Möglichkeit darauf zuzugreifen ------------------ http://www.stupidedia.org/stupi/Rechter_Winkel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
       

 Beiträge: 13530 Registriert: 30.11.2003 ACAD 2008 Mechanical
|
erstellt am: 02. Jun. 2010 10:59 <-- editieren / zitieren --> Unities abgeben:          Nur für Soldnerkugel
|
Soldnerkugel Mitglied
 
 Beiträge: 131 Registriert: 29.01.2010 Win 7, AutoCAD Civil 3D 2015, SketchUp, CarlsonSurvCE
|
erstellt am: 02. Jun. 2010 11:24 <-- editieren / zitieren --> Unities abgeben:         
|
CADmium Moderator Maschinenbaukonstrukteur
       

 Beiträge: 13530 Registriert: 30.11.2003 ACAD 2008 Mechanical
|
erstellt am: 02. Jun. 2010 11:51 <-- editieren / zitieren --> Unities abgeben:          Nur für Soldnerkugel
P.S. ich hab keine Ahnung von VBA und hab dir nur was aus der Hilfe zusammenkopiert: Sub Example_StartPoint() Dim returnObj As AcadObject Dim basePnt As Variant Dim startPoint As Variant Dim endPoint As Variant On Error Resume Next ' The following example waits for a selection from the user RETRY: ThisDrawing.Utility.GetEntity returnObj, basePnt, "Select an object" If Err <> 0 Then Err.Clear MsgBox "Program ended.", , "GetEntity Example" Exit Sub Else returnObj.Update startPoint = returnObj.startPoint endPoint = returnObj.endPoint MsgBox"Start point " & startPoint(0) & ", " & startPoint(1) & ", " & startPoint(2) & " and Endpoint " & endPoint(0) & ", " & endPoint(1) & ", " & endPoint(2), vbInformation, "StartPoint Example" returnObj.Update End If GoTo RETRY End Sub
------------------ - 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 |
Ex-Mitglied
|
erstellt am: 02. Jun. 2010 11:54 <-- editieren / zitieren -->
Hi, Du prüfst, ob der Anwender wirklich eine Linie gewählt hat: Code: if TypeOf returnObj is AcadLine then 'ja, User hat eine Linie gewählt, also weiter dim tLine as AcadLine set tLine = returnObj 'unbekannten Entitytyp auf AcadLine casten 'und hier stehen jetzt Start- und EndPunkt zur Verfügung 'tLine.StartPoint else call MsgBox("Keine Linie gewählt") endif
- alfred - ------------------ www.hollaus.at |
Soldnerkugel Mitglied
 
 Beiträge: 131 Registriert: 29.01.2010 Win 7, AutoCAD Civil 3D 2015, SketchUp, CarlsonSurvCE
|
erstellt am: 02. Jun. 2010 12:01 <-- editieren / zitieren --> Unities abgeben:         
Dank der Hinweise von CADmium konnte ich hier in der Forensuche ein paar Begriffe eintippen und ich denke, dass hier meine Lösung liegt http://ww3.cad.de/foren/ubb/Forum259/HTML/000556.shtml#000005 Zitat:
Public Sub StartEndPoint() Dim oAcadLine As AcadLine Dim oAcadPoly As AcadLWPolyline Dim oEntity As AcadEntity Dim Point As Variant On Error Resume Next ThisDrawing.Utility.GetEntity oEntity, Point, "Objekt wählen: " If oEntity Is Nothing Then Exit Sub Select Case oEntity.ObjectName Case "AcDbLine" Set oAcadLine = oEntity With oAcadLine MsgBox "Start: " & .StartPoint(0) & ", " & .StartPoint(1) & ", " & .StartPoint(2) & vbCrLf & "End: " & .EndPoint(0) & ", " & .EndPoint(1) & ", " & .EndPoint(2) End With Case "AcDbPolyline" Set oAcadPoly = oEntity With oAcadPoly MsgBox "Start: " & .Coordinates(0) & ", " & .Coordinates(1) & vbCrLf & "End: " & .Coordinates(UBound(oAcadPoly.Coordinates) - 1) & ", " & .Coordinates(UBound(oAcadPoly.Coordinates)) End With Case Else Exit Sub End Select End Sub
wie Alfred meinte, muss man erst den unbekannten Linientypen zuweisen, anschliessend kann man dann über die Linieneigenschaften (anscheinend, muss ich erst noch ausprobieren) auf Start- und Endpunkt zugreifen. ------------------ http://www.stupidedia.org/stupi/Rechter_Winkel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |