Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  IntersectWith Methode

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:  IntersectWith Methode (2045 mal gelesen)
msmcp
Mitglied
EDV-Dozent

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

Beiträge: 5
Registriert: 21.08.2004

Entwicklungsumgebung ist VB6
Autocad Version 2000

erstellt am: 22. Aug. 2004 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


Liebes Forum,

offensichtlich mache ich einen Fehler bei der Benutzung der
InterSectWith-Methode. Ich bitte euch um eure Hilfe.

Problembeschreibung
----------------------
Ich habe eine Zeichnungsdatei, die in Autocad 2004 erstellt
und im Autocad2000-Format gespeichert wurde. In dieser
Datei befinden sich zwei 3DSolids (Acad3DSolid).

Eines der Solids ist grün (3), das andere weiß (256). Ich ziehe
um die Solids eine Region auf, um später durch die Region
(ActiveSelectionSet) zu iterieren (mit VB6, resp. via Active-X).

Code
-----
Option Explicit

Private Sub cmd_Click()

    Dim oAutocad As Object
    Dim oDoc As Object
    Dim oASSet As Object
    Dim o3DSolid1 As Object
    Dim o3DSolid2 As Object
    Dim intPoints As Variant
    Dim lngI As Long
   
    Set oAutocad = GetObject(, "AutoCAD.Application")
    Set oDoc = oAutocad.ActiveDocument
    Set oASSet = oDoc.ActiveSelectionSet

    For lngI = 0 To oASSet.Count - 1
        If oASSet.Item(lngI).Color <> 256 Then
            Set o3DSolid1 = oASSet.Item(lngI)
        ElseIf oASSet.Item(lngI).Color = 256 Then
            Set o3DSolid2 = oASSet.Item(lngI)
        End If
    Next lngI
    intPoints = o3DSolid1.IntersectWith(o3DSolid2, acExtendNone)
End Sub

Fehlermeldung
---------------
Nachdem die Prozedur aufgerufen wird erscheint folgende Fehler-
meldung: Die Methode IntersectWith für das Objekt IAcad3DSolid ist fehl-
geschlagen"

Ich danke euch schon jetzt für die Hilfe!
Stefan

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: 22. Aug. 2004 21:26    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 msmcp 10 Unities + Antwort hilfreich

Hi Stefan,

du machst da im Prinzip wohl nichts falsch, es ist nur so, dass sich 3DSolids einfach jeglicher Bearbeitung entziehen (ausser Verschieben usw.)

Die 3DSolids erben zwar von ihrer Base Class die Methode IntersectWith, aber wirklich implementiert ist die Methode nicht. Das 'Fehlschlagen' ist also kein Fehler, sondern so programmiert.

Abgesehen davon kann man das Ergebnis auch gar nicht mit Punkten erfassen: SchnittPUNKTE gibt es nur bei geraden und krummen Kurvenobjekten.

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

msmcp
Mitglied
EDV-Dozent

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

Beiträge: 5
Registriert: 21.08.2004

Entwicklungsumgebung ist VB6
Autocad Version 2000

erstellt am: 23. Aug. 2004 11:05    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

Hi Axel!

Ich danke Dir vielmals für Deine Antwort. Ich bin zwar beruhigt, dass
ich keinen Fehler gemacht habe, aber jetzt stellt sich die Frage, wie
ich das Problem löse...

Überraschend ist, dass der _intersect Befehl in der Autocacd "Kommando
zeile" bestens funktioniert. Das Problem muss also in VBA zu suchen
sein. Vielleicht liegt hier auch eine Lösung...

Die 3D-Volumenkörper nehmen in Autocad ja ohnehin eine Sonderrolle
ein, weil Autodesk sie wohl "outgesourct" hat und selbst keine Ahnung
hat, wie sie eigentlich generiert werden.

Vielen Dank, in jedem Fall!
Stefan

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: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 msmcp 10 Unities + Antwort hilfreich

Der Befehl _Intersect und die Methode curve.IntersectWith sind zwei völlig unterschiedliche Dinge. Das erste ist ein AutoCAD-Befehl zum Erzeugen bzw. Modifizieren von Volumenkörpern, das andere ist eine ActiveX-Methode, um bestimmte Punkte von Curve-Objekten abzufragen.

Dass das zweite bei Volumenkörpern zwar vorhanden, aber nicht implementiert ist, liegt an der Klassenstruktur von AutoCAD. Gemeinsam haben die beiden jedenfalls nur neun Buchstaben, sonst nix. Du kannst auch genausowenig mit _Intersect den Schnittpunkt zweier Linien ermitteln;-)

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

msmcp
Mitglied
EDV-Dozent

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

Beiträge: 5
Registriert: 21.08.2004

Entwicklungsumgebung ist VB6
Autocad Version 2000

erstellt am: 24. Aug. 2004 22:15    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!

Sehr herzlichen Dank für die Aufklärung!

Jetzt bin ich im Bilde. Du weißt nicht nur super Bescheid, sondern
kannst auch gut erklären. Das meine ich ganz ernst!

Merci!
Stefan

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



Anzeige:Infos zum Werbeplatz >>

HGS-ROHR CAD APP für AEC - Architektur-, Ingenieur- und Bauwesen

Dieses Tool ermöglicht eine präzise Planung und Visualisierung von Rohrleitungssystemen und trägt dazu bei, die Effizienz und Qualität des Rohrleitungsbaus zu verbessern. HGS-ROHR ist ein Software-Tool von HGSimon CAD Engineering für den Rohrleitungsbau, für AUTO-CAD; BRICS-CAD; ZWCAD; GSTAR-CAD

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 22:57    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 msmcp 10 Unities + Antwort hilfreich

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