Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Schnittpunkte von Architectural Desktop Objekten ermitteln

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
Autor Thema:  Schnittpunkte von Architectural Desktop Objekten ermitteln (1947 mal gelesen)
Michel100
Mitglied
Architekt


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

Beiträge: 10
Registriert: 13.08.2008

erstellt am: 13. Aug. 2008 12:38    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 VBA'ler,

ich möchte mit Hilfe von VBA die Überprüfung eines mit Architectural Desktop 2008 erstellten CAD-Plans durchführen, ob zwischen Wandobbauteilen ("AecWall" Objekte) und Unterzügen ("AecsMember" Objekte) Schnittpunkte vorhanden sind.

Ich habe bereits versucht mit der "IntersectWith"-Methode, die man klassisch bei der Ermittlung von Linienschnittpunkten in AutoCAD verwendet zum Ziel zu kommen. Leider ohne Erfolg!

Meine Vorgehensweise war wie folgt:
-Ich habe jeweils von den Wandobjekten ("AecWall" Objekte) die Eigenschaft "Roofline" ausgelesen

-Von den Unterzügen ("AecsMember"-Objekte)können leider die Eigenschaften "Floorline", bzw. "Roofline" nicht ausgelesen werden. Daher habe ich den "EndPoint" und den "StartPoint" ausgelesen und mit diesen beiden Koordinaten eine Linie vom Typ AcadLinie erzeugt

-Zuletzt habe ich dann die IntersectWith-Methode angewendet und versucht die Schnittpunkte dieser beiden Linien zu ermitteln.

-Fehlermeldung!!

Hoffe sehr auf Eure Hilfe und bin auf die Antworten gespannt!

Viele Grüße Michel 

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 13. Aug. 2008 14: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 Michel100 10 Unities + Antwort hilfreich

Hallo Michel,

Herzlich Willkommen im Forum 

Welche Fehlermeldung bekommst Du denn? (eventuell als Screenshot hier einstellen)
Kannst Du den betreffenden Codeteil posten?
Mit diesen pauschalen Angaben ist es schwierig Lösungen anzubieten.

Grüße,
Klaus 

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

Michel100
Mitglied
Architekt


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

Beiträge: 10
Registriert: 13.08.2008

erstellt am: 14. Aug. 2008 14:00    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 Klaus, für die nette Begrüßung!

Fasse nochmal das Ziel zusammen:
Die Schnittpunkte eines Unterzuges (UZ) mit dem einer Wand zu ermitteln. Dazu sollen 2 Linien, die ei-ne stellvertretend für die Wand , die andere stellvertretend für den UZ mit der "IntersectWith" Methode auf Schnittpunkte überprüft werden!

1.Problem:
Die UZs gehören der Klasse "AecsMember" an, die die Objekteigenschaft "FloorLine" nicht enthält. Deshalb war mein Gedanke durch die "StartPoint" und "EndPoint" Eigenschaft der Klasse eine Linie zu erzeugen, die stellvertretend für das UZ Objekt verwendet werden soll. Doch das schlug fehl mit der Fehlermeldung:

Run-time Error '438':
Object doesn't support this property or method

Quellcode:

'Anm.: Erzeugt ein neues Unterzug (UZ) Objekt und weist diesem Attribute zu
  Public Function NeuesUZBauteil(UZEnti As AecsMember) As clsBauteile
    Set NeuesUZBauteil = New clsBauteile
    NeuesUZBauteil.BauteilName = UZEnti.ObjectName
    NeuesUZBauteil.BauteilHandle = UZEnti.Handle
    NeuesUZBauteil.BauteilObjectID = UZEnti.ObjectID
    NeuesUZBauteil.StartPunkt = UZEnti.StartPoint
    NeuesUZBauteil.EndPunkt = UZEnti.EndPoint
    NeuesUZBauteil.UZLinie = ThisDrawing.ModelSpace.AddLine(NeuesUZBauteil.StartPunkt, _ NeuesUZBauteil.EndPunkt)
  End Function


2.Problem
Um zu überprüfen, ob die "IntersectWith" Methode mit der "FloorLine" Eigenschaft der Klasse "Aec-Wall" anwendbar ist, habe die "IntersectWith" Methode auf die Wandbauteile angewendet und der folgende Fehler trat auf:

Run-time error '424'
Oject required


Quellcode

Option Explicit

'Dim BauteilListe As Collection
Dim Bauteil As clsBauteile
Dim Entity As AcadEntity
Dim Wand As AecWall
Dim Unterzug As AecsMember

Public Function BauteilListeAnlegen() As Collection
  Dim WandBauteilListe As Collection
  Set WandBauteilListe = New Collection
  Dim UZBauteilListe As Collection
  Set UZBauteilListe = New Collection
  For Each Entity In ThisDrawing.ModelSpace
    Set Bauteil = New clsBauteile
'Anm.: Wände
'            -----
    If Entity.ObjectName = "AecDbWall" Then
      Set Wand = Entity
      Set Bauteil = NeuesWandBauteil(Wand)
      WandBauteilListe.Add Bauteil
'Anm.: Unterzüge
'              ---------
    ElseIf Entity.ObjectName = "AecsDbMember" Then
      Set Unterzug = Entity
      Set Bauteil = NeuesUZBauteil(Unterzug)
      UZBauteilListe.Add Bauteil
    End If
  Next
'Anm.: Überprüfung eines Schnittpunktes zwischen dem 1. und dem 2.
'Wandbauteil
  Dim VarPoints As Variant
  VarPoints = WandBauteilListe.Item(1).FussLinie.IntersectWith _
            (WandBauteilListe.Item(2).FussLinie, acExtendNone)
End Function

'Anm.: Klasse WandBauteile
Public Function NeuesWandBauteil(WallEnti As AecWall) As clsBauteile
    NeuesWandBauteil.FussLinie = WallEnti.Floorline
End Function


Vielleicht bin ich auch völlig auf dem Holzweg und die "IntersectWith" Methode ist nicht anwendbar um die Schnittpunkt eines "AecWall" Objektes und eines "AecsMember" Objektes zu ermitteln?
Schon mal Vielen Dank im Voraus!

Viele Grüße Michel

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 15. Aug. 2008 12:29    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 Michel100 10 Unities + Antwort hilfreich

Hallo Michel,

Leider habe ich keinen ADT, deshalb ist es nicht so einfach den Code nachzuvollziehen.
Folgendes ist mir nur aufgefallen beim Problem 1:

Code:
NeuesUZBauteil.UZLinie = ThisDrawing.ModelSpace.AddLine(NeuesUZBauteil.StartPunkt, _ NeuesUZBauteil.EndPunkt)

Zum Einen: Ist der Unterstrich absichtlich? (oder sollte hier eine Fortsetzung in der nächsten Zeile folgen?)

Zum Anderen: Hast Du Dir mal die Definition von StartPunkt und EndPunkt angesehen? Die Methode erwartet hier einen Variant (three-element array of doubles). Darüber bin ich auch schon mal gestolpert.
Wo steht denn der Debugger beim Abbruch? Bist Du die Funktion mal schrittweise durchgegangen?


Zum Problem 2:

Code:
VarPoints = WandBauteilListe.Item(1).FussLinie.IntersectWith _
            (WandBauteilListe.Item(2).FussLinie, acExtendNone)

Hast Du mal im Objektkatalog (F2) nachgesehen ob die Methode unterstützt wird?

Viel Erfolg,
Klaus

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

Michel100
Mitglied
Architekt


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

Beiträge: 10
Registriert: 13.08.2008

erstellt am: 17. Aug. 2008 19:30    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 Klaus für deinen Rat! Ich werde mich nochmal intensiv mit dem Thema beshäftigen und mir deine Tipps zu Herzen nehmen!
Gibt es denn ein Forum, in dem sich speziell mit Problemen der VBA Programmierung in Architectural Desktop auseinandergesetzt wird?

Viele Grüße Michel

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: 1357
Registriert: 24.07.2002

AutoCAD ACA 2018
Solidworks 2016 Sp5
Enterprise PDM 2016 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell T3620
Intel Core i7-7700K
16 GB Arbeitsspeicher
2x Samsung S24C650
Dell M4800

erstellt am: 17. Aug. 2008 19:52    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 Michel100 10 Unities + Antwort hilfreich

Hi Michel,

Hier ist ein Link zum Thema ADT und VBA, den Nancy mal gepostet hat. Vielleicht hilft dir das schon weiter.

Gruß, Carsten

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

Michel100
Mitglied
Architekt


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

Beiträge: 10
Registriert: 13.08.2008

erstellt am: 19. Aug. 2008 14: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

Hallo Carsten,

vielen Dank für den Link! Der Link sieht beim ersten Überfliegen sehr vielversprechend aus!!

Grüße Michel

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