Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Endpunkte in VBA ansteuern

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
  
PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
Autor Thema:  Endpunkte in VBA ansteuern (960 mal gelesen)
dan_rather
Mitglied
Techniker HLK


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

Beiträge: 97
Registriert: 09.12.2003

erstellt am: 23. Aug. 2004 11:14    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 möchte die Endpunkte aller Linien in einer benannten auswahl mit einem Punkt versehen.
Wie kann ich die Endpunkte in VBA ansteuern?
Danke für eure Antworten

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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Die Phönizier haben das Geld erfunden - aber warum so wenig?
(Johann Nepomuk Nestroy)

erstellt am: 23. Aug. 2004 14:16    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 dan_rather 10 Unities + Antwort hilfreich

Schau doch mal hier: Entwickler-Hilfe -> Object Model -> Line
Da klickst du auf Line und findest dort die Methoden Line.StartPoint und Line.Endpoint. Unter beiden Methoden findest du das hier:

Variant (three-element array of doubles);
For the Arc and Ellipse objects this property is read-only.
For the Line object this property is read-write.
The 3D WCS coordinate representing the start point for the object.

Ich nehme jedenfalss an, dass du mit 'Ansteuern' das Auslesen bzw. Modifizieren der Punkte meinst.

Gruß, Axel Strube-Zettler

------------------

Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze

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

dan_rather
Mitglied
Techniker HLK


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

Beiträge: 97
Registriert: 09.12.2003

erstellt am: 24. Aug. 2004 12:27    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 Axel,
mit den Punkten war schon mal eine große Hilfe.
Wie kann ich aber in einem Selectionset die Schnittpunkte auswählen die alle Linien haben wenn sie Senkrecht aufeinander stehen? -|
Das heißt, ich möchte am endpunkt der Linie die auf die zeite Linie stößt einen Punkt setzen. Das ganze soll in einem Schema automatisch die Verbindungspunkte von Leitungen darstellen.
Wäre für jeden weiteren Tipp Dankbar.
Habe es schon mit "IntersectWith" versucht. Aber leider ohne Erfolg.
Danke schon mal

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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Die Phönizier haben das Geld erfunden - aber warum so wenig?
(Johann Nepomuk Nestroy)

erstellt am: 24. Aug. 2004 13:18    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 dan_rather 10 Unities + Antwort hilfreich

Na ja,

da müsstest du schon etwas mehr an Information liefern. IntersectWith ist schon die richtige Methode. Dann must du testen, ob der Schnittpunkt identisch mit einem Linienendpunkt ist. Wenn ja Anschlusspunkt, wenn nein Kreuzung.

Wird aber ein Haufen Rechnerei, denn du musst jede Linie im SS gegen alle anderen testen. Da musst du dir dann Gedanken über Algorithmen machen. Als Beispiel kann dir eine Entfernungstabelle dienen - warum wird da wohl immer nur eine diagonale Hälfte ausgefüllt?

Ich weiss ja nicht, was du sonst noch vorhast - aber für diese Dinge, zu denen du bisher gefragt hast, ist Lisp wesentlich effektiver als VBA.

Gruß, Axel Strube-Zettler

------------------

Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze

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

dan_rather
Mitglied
Techniker HLK


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

Beiträge: 97
Registriert: 09.12.2003

erstellt am: 24. Aug. 2004 13:35    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 Axel,
leider sind meine Kenntnisse in Lisp noch viel besch...eidener als in VBA. Die Frage ist wie sag ich in VBA "suche alle Linnien in meiner Auswahl die mit ihrem Endpunkt auf einer Linie des gleichen Layer liegen und setze mir dort einen Punkt(besser noch einen Ring, aber den scheint VBA nicht zu kennen?).
hier erstmal der bisherige code:
    Sub Massenermittlung()
    Dim startPoint As Variant
    Dim endPoint As Variant
    Dim Vpunkt As AcadCircle
    Dim LayerAkt As AcadLayer
    Dim intPoints As Variant
    Dim lineobj As AcadLine
    Dim gew As AcadObject
    Dim ausw As AcadObject
    Dim acss As AcadSelectionSet
    Set acss = ThisDrawing.SelectionSets.Add("Line")
    Dim Mldg, Stil, Titel, Antwort, Text1
    Stil = vbOKCancel
    Titel = "Auswertung"
    frei = "  "
    Dim I As Double
   
    On Error GoTo ENDE
   
    MsgBox "Bitte den Layer durch anklicken wählen"
    ThisDrawing.Utility.GetEntity gew, "Objekt wählen"
            MsgBox "Bitte Objekte Auswählen"
   

acss.SelectOnScreen

For Each ausw In acss

        If ausw.Layer = gew.Layer Then
        If TypeOf ausw Is AcadLine Then
      ' If ausw Is ausw.IntersectWith(ausw, acExtendNone) Then
       
       
    startPoint = ausw.startPoint
    endPoint = ausw.endPoint
 
    Set Vpunkt = ThisDrawing.ModelSpace.AddCircle(endPoint, 15)
    Vpunkt.Layer = ausw.Layer
    Vpunkt.Lineweight = acLnWt500
   
 
  'End If
  End If
  End If
  Next ausw
 
 
          Antwort = MsgBox("Punkte gesetzt", Stil, Titel)
  If Antwort = vbCancel Then GoTo ENDE

ENDE:
  acss.Delete
End Sub

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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Die Phönizier haben das Geld erfunden - aber warum so wenig?
(Johann Nepomuk Nestroy)

erstellt am: 24. Aug. 2004 17: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 dan_rather 10 Unities + Antwort hilfreich

> ' If ausw Is ausw.IntersectWith(ausw, acExtendNone) Then...

Diese Zeile hast du natürlich mit gutem Grund auskommentiert;-)
Da berechnechst du den Schnittpunkt einer Linie mit sich selber. Du musst aber wie gesagt jede Linie gegen jede andere testen. Es ist aber auch nicht so ganz einfach, dass man da zwei foreachs ineinander verschachteln könnte. Da kommt das ins Spiel, was ich oben unter dem Stichwort Entfernungstabellen angesprochen habe. Wenn du den Schnittpunkt der Linien Nr. 163 mit Nr. 241 berechnet hast, macht es keinen Sinn, auch noch den Schnittpunkt von Linie 241 mit Linie 163 zu berechnen, den hast du ja dann schon.

Die Lösung ist nicht so einfach, dass man sie hier mit ein paar Zeilen darstellen könnte. Ich würde die Linien zunächst aus dem Auswahlsatz in ein lineares Array umkopieren. Mit einem Array lässt sich über die Indizes sehrschön auf die Linien zugreifen. Wenn du 1000 Linien hast, testest du Nr.1 gegen alle anderen 999. Nummer 2 musst du dann nur noch gegen 3 bis 999 testen usw. Ich lege es dir ans Herz: Entfernungstabelle. Dieses Prinzip musst du verstanden haben. Foreach mit Auswahlsatz ist das ungeeignete Werkzeug, da du immer alle Elemente bearbeitest. Da ist ein ForNext angesagt, weil du Anfang und Ende der Iteration selbst bestimmen kannst.

Natürlich kennt VBA keinen RING, weil es den nicht gibt, ebensowenig wie ein POLYGON oder ein RECHTECK. Diese Befehle erzeugen POLYLINIEN, und eine ringförmige Polylinie ist auch mit VBA recht einfach zu erzeugen.

Gruß, Axel Strube-Zettler

------------------

Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze

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

dan_rather
Mitglied
Techniker HLK


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

Beiträge: 97
Registriert: 09.12.2003

erstellt am: 25. Aug. 2004 09:16    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 Axel!
werde mich mal mit dem Beschäftigen.

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