Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Gummiband Funktion oder Blöcke vereinigen

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
  
Von Digital Twins bis Hochleistungs-Computing: PNY präsentiert seine Zukunftstechnologien für die Industrie von morgen, eine Pressemitteilung
Autor Thema:  Gummiband Funktion oder Blöcke vereinigen (1812 mal gelesen)
stefanstein
Mitglied



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

Beiträge: 11
Registriert: 08.12.2009

WinXP SP3
AutoCA 2009

erstellt am: 08. Dez. 2009 15:34    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


autocad1.gif

 
Hallo,

bin relativ neu in AutoCAD VBA und auch neu hier im Forum. Habe schon gesucht, aber vielleicht benutze ich nicht dir richtigen Begriffe.

Ich möchte den gemeinsamen Flächeninhalt von mehreren übereinander liegenden Blöcken herausfinden (Vereinigungsmenge).
Zuerst habe ich dies mit "Vereinigen" versucht, aber anscheinend ist dies für Blöcke nicht möglich.

Gibt es eine Funktion, die sozusagen ein "Gummiband" um meine Blöcke legt, damit ich deren Flächeninhalt herausfinden kann? Ich habe im Anhang eine Skizze erstellt, damit man sieht was ich meine -> siehe blaue Linie.
Oder alternativ eine Funktion, welche die Blöcke vereinigt?

Vielen Dank für eure Hilfe,
Stefan

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


Ex-Mitglied

erstellt am: 08. Dez. 2009 15:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Stefan,

herzlich willkommen bei CAD-de! 

Die Aufgabenstellung würde mich in ähnlicher Form an Fahrzeug-Schleppkurven erinnern (da wäre aber die blaue Linie nicht ganz korrekt), Deine beiden direkten Fragen würde ich so beantworten:


>> Gibt es eine Funktion, die sozusagen ein "Gummiband" um meine Blöcke legt

...nein.    (gibt's da vielleicht eine Hintergrundinfo, wozu Du dieses 'Gummiband' bzw. die Fläche davon benötigst, vielleicht kommen dann noch mehr Ideen als geometrisch rechnen)


>> Oder alternativ eine Funktion, welche die Blöcke vereinigt?

Wenn die Rechtecke Deiner Blockdefinitionen Regionen sind, dann können diese mit '_union' vereinigt werden, wenn Du temporär die Blockreferenzen explodierst und dann die resultierenden Regionen dafür verwendest.


HTH, - alfred -

------------------
www.hollaus.at

stefanstein
Mitglied



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

Beiträge: 11
Registriert: 08.12.2009

WinXP SP3
AutoCA 2009

erstellt am: 08. Dez. 2009 16:42    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 erst einmal für die flotte Antwort.

Zitat:

Die Aufgabenstellung würde mich in ähnlicher Form an Fahrzeug-Schleppkurven erinnern (da wäre aber die blaue Linie nicht ganz korrekt)

Gut erkannt!!  Ist klar, dass die blaue Linie falsch ist, aber für die eigentliche Berechnung sollen dann wesentlich mehr Einzelschritte berechnet werden, um den Fehler möglichst gering zu halten.
Zitat:
(gibt's da vielleicht eine Hintergrundinfo, wozu Du dieses 'Gummiband' bzw. die Fläche davon benötigst, vielleicht kommen dann noch mehr Ideen als geometrisch rechnen)

Es soll die Fläche des Fahrzeuges berechnet werden, die überfahren wird. Und die ich die Hüllkurven mit einzelnen Schritten des Fahrzeuges darstelle, möchte ich diese einzelnen Fahrzeugstellungen "verschmelzen".
Zitat:

Wenn die Rechtecke Deiner Blockdefinitionen Regionen sind, dann können diese mit '_union' vereinigt werden, wenn Du temporär die Blockreferenzen explodierst und dann die resultierenden Regionen dafür verwendest.

Werde ich mal ausprobieren. Hatte nur gehofft, dass ich das ganze mit den Blöcken machen kann, da in meinem Bsp ja nur ein Rechteck vorhanden ist, aber letztendlich beliebige Fahrzeugkonturen dargestellt werden sollen.

Gruß Stefan


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


Ex-Mitglied

erstellt am: 08. Dez. 2009 16:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Stefan,

>> da wäre aber die blaue Linie nicht ganz korrekt ....
>> ..aber für die eigentliche Berechnung sollen dann wesentlich mehr Einzelschritte berechnet werden

Nee, in dem Fall ist ein Gummiband rundherum grundsätzlich falsch. Situation: Du hast ein Zugfahrzeug und 3 Anhänger (weiss schon, gibt's nur in Australien, aber die Extremfälle zeigen das Problem meiner nächsten Beschreibung) und alle Anhänger fahren in der Spur des Zugfahrzeugs (wie Lok und Wagons). Diese stellst Du jetzt so auf, dass der letzte Anhänger noch vor dem Kreisverkehr steht, das ziehende Fzg aber bereits bei der 3.ten Ausfahrt des Kreisverkehrs rausfährt. In diesem Fall würde Deine Gummibandtechnik die Kreisverkehrs-Mittelinsel voll abdecken ==> falsch .


>> aber letztendlich beliebige Fahrzeugkonturen dargestellt werden sollen

Was spricht hier dagegen, das mit Regionen im Fahrzeugblock zu erfüllen?


- alfred -

PS: erfindest Du gerade das Rad neu oder hast Du ein neues Rad? 

------------------
www.hollaus.at

stefanstein
Mitglied



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

Beiträge: 11
Registriert: 08.12.2009

WinXP SP3
AutoCA 2009

erstellt am: 09. Dez. 2009 08:40    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

Zitat:

Nee, in dem Fall ist ein Gummiband rundherum grundsätzlich falsch.


Stimmt, das Beispiel mit den Anhängern macht es klar.
Zitat:

Was spricht hier dagegen, das mit Regionen im Fahrzeugblock zu erfüllen?

Erst einmal nur, dass ich das bisher noch nie gemacht habe ;-)  Werde mich aber heute Abend mal daran versuchen.
Zitat:

PS: erfindest Du gerade das Rad neu oder hast Du ein neues Rad?  


Ist eine Studienarbeit, also Ersteres.


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

stefanstein
Mitglied



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

Beiträge: 11
Registriert: 08.12.2009

WinXP SP3
AutoCA 2009

erstellt am: 10. Dez. 2009 14: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

 
Zitat:
wenn Du temporär die Blockreferenzen explodierst und dann die resultierenden Regionen dafür verwendest.

So langsam bin ich hier am verzweifeln.

Ich versuche alle Blöcke zu explodieren und möchte diese mit einem SelectionSet auswählen. Aber bekomme immer einen "Laufzeitfehler '-2147418113 (80000ffff)': Automatisierungsfehler,  Schwerwiegender Fehler".

Liegt das an mir bzw. mache ich etwas falsch?

Code:

Dim Entity As AcadEntity
Dim FilterType(1) As Integer
Dim FilterData(1) As Variant
FilterType(0) = 100
FilterData(0) = "AcDbBlockReference"

On Error Resume Next
Set acSelBloecke = ThisDrawing.SelectionSets.Add("Bloecke")
On Error GoTo 0
Set acSelBloecke = ThisDrawing.SelectionSets.Item("Bloecke")

acSelBloecke.Select acSelectionSetAll, , , FilterType, FilterData

For Each Entity In acSelBloecke 'Hier kommt der Fehler
    MsgBox "asd"
next


Und gleich noch die nächste Frage. Gibt es einen einfacheren Weg die Blöcke "temporär" zu explodieren oder meinst du damit explodieren -> Region -> wieder zusammenfügen??

Vielen Dank,
Stefan

[Diese Nachricht wurde von stefanstein am 10. Dez. 2009 editiert.]

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


Ex-Mitglied

erstellt am: 10. Dez. 2009 14:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

leider sehe ich keinen offensichtlichen Grund für den Fehler (die Nummer alleine habe ich jetzt nicht gesucht). Also leider nur ein paar Inputs:

Wenn Du ein SelectionSet erstellt hast, dann bedeutet es nicht, dass schon was selektiert ist.
Ich sehe auch keine Deklaration der Variable 'acSelBloecke' (Typkonflikt?)

Was machst Du denn mit eine For-Next Schleife durch ein SelectionSet, das möglicherweise noch keine Elemente enthält? Prüfen könntest Du das vorher mit der .Count-Eigenschaft.

Ich würde den Filter folgendermaßen aufbauen:

Code:
FilterType(0) = 0
FilterData(0) = "INSERT"

(hat aber nichts mit dem Fehler an der markierten Stelle zu tun)


>> Gibt es einen einfacheren Weg die Blöcke "temporär" zu explodieren oder
>> meinst du damit explodieren -> Region -> wieder zusammenfügen??

In VBA würde mir nichts einfacheres einfallen. Natürlich könnte man sich aus der Blockdefiniton und der Einfügematrix jeder Blockreferenz (Verschiebung, Drehung, Skalierung) auch die Regionen herausrechnen, wird bei einfachen Regionen vielleicht auch schneller sein, aber in der Programmierung um Faktoren länger dauern.

Vorsicht bei dem Vokabular 'wieder zusammenfügen' ==> damit meinte ich explizit '_union'! Zusammenfügen kann leider so viel anderes auch heissen.

- alfred -

------------------
www.hollaus.at

stefanstein
Mitglied



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

Beiträge: 11
Registriert: 08.12.2009

WinXP SP3
AutoCA 2009

erstellt am: 10. Dez. 2009 15:08    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, danke. Du hast mich zwar nicht direkt auf den Fehler gebracht, aber indirekt ;-)
Habe gerade schnell noch mal alles nue geschrieben und mich gefreut, dass es funktioniert, bis ich ein bisserl was in der Zeichnung gelöscht habe -> Fehler ist wieder aufgetreten.

Ich denke (und hoffe) es liegt an meiner schlechten Deklaration des SelectionSets. Da ich es am Ende nicht lösche bzw. am Anfang noch einmal leere wurde immer noch auf das Alte zugegriffen, obwohl  manche Elemente in der Zeichnung nicht mehr vorhanden waren.

4 Stunden Arbeit umsonst, wegen der (noch) mangelnden VBA Fähigkeit. Hoffentlich wird das irgendwann mal besser. Jetzt kann ich mich wieder dem eigentlichen Problem "Vereinigen" widmen.

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


Ex-Mitglied

erstellt am: 10. Dez. 2009 15:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> 4 Stunden Arbeit umsonst

Ich ärgere mich im nachhinein auch immer, wenn ich Zeit verbockt habe. Aber ich motiviere mich damit, dass ich meist durch die Fehlersuche viel mehr gelernt habe, als ich sonst hätte lernen und erfahren können. 

Also fröhlich und motiviert weiter. 

- alfred -

------------------
www.hollaus.at

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