Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Stutzen von versetzte Linien funktioniert nicht

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
  
NVIDIA GTC Paris und ISC High Performance-Konferenz 2025, eine Pressemitteilung
Autor Thema:  Stutzen von versetzte Linien funktioniert nicht (870 mal gelesen)
sarotti
Mitglied
Bauingenieur


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

Beiträge: 74
Registriert: 14.07.2005

AutoCad 2022 64Bit
Windows 10-64Bit mit 32 GByte

erstellt am: 17. Aug. 2006 15:59    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


offset.jpg

 
Hallo Forum,

ich habe ein Problem mit Linien die mit dem Befehl "offset" versetzt wurden.
Aus dem beigefügten Bild kann man mein Problem erkennen. Nach dem ich die Linie2 versetzt habe möchte ich diese bis zur Linie1 stutzen.

Der Befehl "IntersectWith(...)" funktioniert leider nicht. Da ein Objekt vorausgesetzt wird. Die mit dem Befehl "Offset" versetzten Linien haben aber den Datentyp "Variant".
Im Lokalfenster sehe ich zwar die Koordinaten der versetzten Linie, aber ich komm einfach nicht daran (Objekt fehlt).

Im Forum habe ich keine schlüssige Lösung für mein Problem gefunden.
Hat jemand eine Idee? Danke schon mal im voraus.

Nachfolgend noch mein Code:


Sub Versetzten()
    Dim GewähltesObjekt As Object

    Dim Linie1(3) As Double
    Dim Linie2Obj As AcadLWPolyline
    Dim Datenfeld() As Double
       
    Dim VersetzteLinie As Variant
    Dim Abstand As Double
       
       
    ThisDrawing.Utility.GetEntity GewähltesObjekt, PickedPoint, "Linie 1 wählen:"
    'Linie ausgewählt
    Datenfeld = GewähltesObjekt.StartPoint
    Linie1(0) = Datenfeld(0)
    Linie1(1) = Datenfeld(1)
    Datenfeld = GewähltesObjekt.EndPoint
    Linie1(2) = Datenfeld(0)
    Linie1(3) = Datenfeld(1)
   
    ThisDrawing.Utility.GetEntity GewähltesObjekt, PickedPoint, "Linie 2 wählen:"
    Datenfeld = GewähltesObjekt.Coordinates

    Set Linie2Obj = ThisDrawing.ModelSpace.AddLightWeightPolyline(Datenfeld)

     
     
    Abstand = 1.2
    VersetzteLinie = Linie2Obj.Offset(-Abstand)


    'Gedoppelte Linie2 löschen
    Linie2Obj.Delete
End Sub

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9807
Registriert: 01.12.2003

AutoCAD 2.5 - 2022, LDD, MDT, RD, ADT, Civil
Inventor AIP 4-11, 2008 -2022
Win 10

erstellt am: 17. Aug. 2006 16:07    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 sarotti 10 Unities + Antwort hilfreich

Ganz einfach kann man nach dem Offset wohl das zuletzt erzeugte Objekt in der Zeichnungsdatenbank erfragen.

------------------
Mit freundlichem Gruß

Udo Hübner

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

sarotti
Mitglied
Bauingenieur


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

Beiträge: 74
Registriert: 14.07.2005

AutoCad 2022 64Bit
Windows 10-64Bit mit 32 GByte

erstellt am: 17. Aug. 2006 16: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

Danke für den Tipp,

durch:
    Dim CrEnt As AcadEntity
    Set CrEnt = ModelSpace.Item(0)
    Datenfeld = CrEnt.Coordinates

komm ich schon mal an die Daten.
Das mit dem Stutzen werde ich morgen angehen.

10  für Sie Herr Hübner

Gruß Sarotti

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1360
Registriert: 24.07.2002

erstellt am: 17. Aug. 2006 20: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 Nur für sarotti 10 Unities + Antwort hilfreich

Hallo Sarotti,

Warum arbeitst du denn nicht mit deiner Variable "VersetzteLinie" weiter? Da ist doch das Objekt, welches du stutzen willst.
Du kannst ausserdem den Kram mit Line2Obj weglassen, wenn du die Zeile

VersetzteLinie = Linie2Obj.Offset(-Abstand)

wie folgt änderst:

VersetzteLinie = GewähltesObjekt.Offset(-Abstand)

Empfehlen würde ich dir noch, das du bei den Abfragen der Objekte noch eine Fehlerabfrage einbaust, da du sonst bei den falschen Objekten eine Fehlermeldung / Abbruch des Makros bekommst.

Gruß, Carsten

[Diese Nachricht wurde von Carsten1210 am 17. Aug. 2006 editiert.]

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



Anzeige:Infos zum Werbeplatz >>

pitCAD Ultimate Heizung - Kälte - Sanitär - Laborbau - Netzwerk CAD APP für TGA, Elektro, Facility Management

Vereint die langjährige Erfahrung von pit-cup im Bereich der Gebäudetechnikplanung und des Facility Management zu einem durchgängigen 2D/3D CAD/BIM Planungswerkzeug, über den gesamten Lebenszyklus einer Immobilie.

sarotti
Mitglied
Bauingenieur


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

Beiträge: 74
Registriert: 14.07.2005

AutoCad 2022 64Bit
Windows 10-64Bit mit 32 GByte

erstellt am: 18. Aug. 2006 11:07    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 zusammen,

ich habe es geschafft. Danke nochmals für Eure Hilfe!
Ich habe den nachfolgenden Code auf das wesentliche beschränkt.
Also keine Fehlerabfangung, wie Carsten schon richtig bemerkt.

Sub Versetzten()
    Dim Linie1Obj As Object
    Dim Linie2Obj As Object
    Dim Datenfeld() As Double
       
    Dim VersetzteLinie As Variant
    Dim Abstand As Double
    Dim intPoints As Variant
       
    ThisDrawing.Utility.GetEntity Linie1Obj, PickedPoint, "Linie 1 wählen:"
   
    ThisDrawing.Utility.GetEntity Linie2Obj, PickedPoint, "Linie 2 wählen:"

    'Versetzte Linie erzeugen
    Abstand = 1.2
    VersetzteLinie = Linie2Obj.Offset(-Abstand)
   
    'Versetzte Linie stutzen
    'Die zu letzt erzeugte versetzte Linie wird dem Objekt CrEnt zugewiesen
    Dim CrEnt As AcadEntity
    Set CrEnt = ModelSpace.Item(ThisDrawing.ModelSpace.Count - 1)
    intPoints = Linie1Obj.IntersectWith(CrEnt, acExtendBoth)
    Datenfeld = CrEnt.Coordinates
    Datenfeld(0) = intPoints(0)
    Datenfeld(1) = intPoints(1)
    CrEnt.Coordinates = Datenfeld
End Sub

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)2025 CAD.de | Impressum | Datenschutz