Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Solid-Koordinaten mit VB.NET extrahieren

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:  Solid-Koordinaten mit VB.NET extrahieren (1661 mal gelesen)
autogis
Mitglied
Dr.-Ing. E-Technik


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

Beiträge: 185
Registriert: 09.02.2001

BricsCAD V18
Spatial Manager
MapGuide Open Source
PostGIS

erstellt am: 20. Mrz. 2009 14:58    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,

lange habe ich gesucht, bevor ich die Frage hier poste:

Wie erhält man mit VB.NET die Koordinaten eines Solids?

Zum Hintergrund der Frage:

1. Die Geometrie von Bemaßungen einer Zeichnung (Linien, Mtext,...) und unter anderem auch die Maßpfeile sollen in eine ASCII-Datei exportiert werden. Dazu explodiere ich die Bemaßungen und hole mir aus den entstehenden Elementen die Daten. Nur für die Solids habe ich absolut keinen Plan.

2. Bisher habe ich in VBA gearbeitet. Damit war das kein Problem. Über SendCommand die Maße explodiert (ging ja nicht mit VB) und dann die entstandenen Objekte ausgewertet. VB.NET ist für mich absolutes Neuland. Darum bitte ich um Nachsicht. Weiß selbst, dass mir noch Basics fehlen, aber irgend wann muß man sich ja mal einarbeiten.

Danke im Voraus und viele Grüße - Peter - der hofft, hier im richtigen Forum gelandet zu sein?

[Diese Nachricht wurde von autogis am 20. Mrz. 2009 editiert.]

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


Ex-Mitglied

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

Hi Peter,      
Zitat:
- der hofft, hier im richtigen Forum gelandet zu sein
bisher hat es rund um dotNET die meisten Anfragen in diesem Forum gegeben, ...wir werden's natürlich auch hier durchgehen.

Zum ersten, Du hast Dir eine schwere Aufgabe gestellt, hast schon mal vom ObjectARX-DevKit die BRep-Library angesehen (plus die Beispiele daraus)? Diese sind mal nicht auswendig im Detail zu können, aber sollte man als Überblick zum Verständnis mal überflogen haben.

Darin wirst Du auch erkennen, dass '_explode' von 3D-Models eigentlich nicht so trivial ist, denn eine Kugel zu explodieren ist eben nicht eindeutig, könnte Kreise generieren, wie Du diese im 2D-Drahtmodell am Bidschirm siehst, könnte 3D-Flächen generieren (das verfälscht aber auch das Erscheinungsbild, weil eben Abflachungen auftreten), und dabei sind wir nicht einmal noch in die Tiefen der Boolschen-Operationen vortgedrungen.
Und da stellt sich doch glatt die Frage zu 'die Koordinaten eines Solids' was sind denn Koordinaten von mehrfach verschnittenen Volumenkörpern?

Alles hier vorzubeten schaffe ich zeitlich nicht, wenn Du mir ein wenig mehr Info gibst, was (welche Details) Du vom Volumenkörper haben willst, vorbildlich wäre (für meine begrenzte Phantasie       ) wenn Du auch noch die Info mitgibst, was denn weiter mit diesen Detailinfos passieren wird.

Let's start            


[EDIT]..danke an Udo, das hat mich wieder auf den Boden gebracht, ich lass es trotzdem mal da stehen, warte halt noch auf Reaktion, handelt es sich tatsächlich um 2DSolids, dann ist meiniges hier natürlich Themenverfehlung par excellence  
Code, bei dem Du schon mal bis zum Zerlegen und dann zum SOLID durchgedrungen bist, wäre hier schon vorteilhaft[/EDIT]

- alfred -


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

[Diese Nachricht wurde von a.n. am 20. Mrz. 2009 editiert.]

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: 20. Mrz. 2009 16:06    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 autogis 10 Unities + Antwort hilfreich

Ggeht es hier um SOLID oder um 3DSOLID?

Bei aufgelösten Maßpfeilen denke ich an die gefüllten Vierecke vom Typ SOLID - so hab ich es zumindest verstanden.

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

Udo Hübner
www.CAD-Huebner.de

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

autogis
Mitglied
Dr.-Ing. E-Technik


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

Beiträge: 185
Registriert: 09.02.2001

erstellt am: 20. Mrz. 2009 16:20    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 Alfred,

erst mal vielen Dank für die schnelle Antwort. Sollten weitere Fragen entstehen werde ich in das ARX-Forum gehen.

 

Zitat:
Original erstellt von a.n.:
... hast schon mal vom ObjectARX-DevKit die BRep-Library angesehen (plus die Beispiele daraus)?

... Schande über mich ... nein. Was ich hier habe, ist "VB.NET Programming for AutoCAD Customization" von Jerry Winters. Seit dem raucht mir der Kopf. DotNet neu (wie gesagt, früher nur VBA), und das dann noch mit AutoCAD. Bin fix und alle.

 

Zitat:
Original erstellt von a.n.:
Alles hier vorzubeten schaffe ich zeitlich nicht, wenn Du mir ein wenig mehr Info gibst, was (welche Details) Du vom Volumenkörper haben willst, vorbildlich wäre (für meine begrenzte Phantasie    ;) ) wenn Du auch noch die Info mitgibst, was denn weiter mit diesen Detailinfos passieren wird.

Klar, gerne versuche ich, einen Helfer in die Lage zu versetzen, mir zu helfen.

Zunächst möchte ich eigentlich gar nichts mit 3D im weiteren Sinne anstellen. Ich habe es (zum Glück) "nur" mit 2D-Zeichnungen zu tun. Und aus denen sollen Geometrien in ein ASCII-Format konvertiert werden.

Unter anderem auch Maße (AlignedDimension). Die enthalten im konkreten Fall Linien (ist einfach, Start- und Endpunkt stehen direkt drin), Texte/MTexte(nicht mehr ganz trivial, aber immerhin lassen sich Ausrichtung, Insertionpunkt... auch direkt aus den Eigenschaften nehmen) und halt auch Maßpfeile. Im konkreten Fall stellen sie sich als dreieckige Solids dar.

Und genau davon brauche ich die drei Eckpunktkoordinaten. In VBA war das ganz simpel. Man iteriert sich durch die solidobjekt.coordinates und fertig.

Aber für VB.NET habe ich absolut keinen Plan.

Hier mal der Codeschnipsel, den ich mir aus dem Netz geladen und für erste Versuche ein wenig modifiziert habe.

Code:
    <CommandMethod("TestDims")> _
        Public Sub TestDims()
        Dim db As Database = HostApplicationServices.WorkingDatabase
        Dim ed As Editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor

        Using tr As Transaction = db.TransactionManager.StartTransaction
            Try
                Dim btr As BlockTableRecord = CType(tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite), BlockTableRecord)

                Dim coll As DBObjectCollection = New Autodesk.AutoCAD.DatabaseServices.DBObjectCollection()
                Dim ent As Entity
                Dim objId As ObjectId
                Dim oDim As Dimension
                For Each objId In btr
                    ent = CType(tr.GetObject(objId, OpenMode.ForWrite), Entity)
                    If TypeOf (ent) Is Dimension Then
                        oDim = ent
                        oDim.Explode(coll)
                        Dim iter As System.Collections.IEnumerator = coll.GetEnumerator()
                        'Add the entities from exploding the dimension to model space
                        While iter.MoveNext()
                            Dim entCur As Entity = CType(iter.Current, Entity)
                            If TypeOf (entCur) Is Solid Then
                                Dim SOL As Solid
                                SOL = entCur
                            End If
                            If TypeOf (entCur) Is Line Then
                                Dim Lin As Line
                                Lin = entCur
                            End If
                            If TypeOf (entCur) Is MText Then
                                Dim MT As MText
                                MT = entCur
                            End If
                            btr.AppendEntity(entCur)
                            tr.AddNewlyCreatedDBObject(entCur, True)
                        End While
                        'oDim.Erase()
                        coll.Clear()
                    End If
                Next objId
                tr.Commit()
            Catch ex As System.Exception
                ed.WriteMessage(ex.ToString())
            End Try
        End Using
    End Sub


In meinem jugendlichen Leichtsinn glaubte ich, etwas ähnliches, wie in VBA tun zu können. Aber dass war wohl Wunschdenken. Momentan fühlich ich mich um Jahre zurück geworfen.

Danke im Voraus - Peter

Solltest Du weitere Infos brauchen, lass es mich bitte wissen

[Diese Nachricht wurde von autogis am 20. Mrz. 2009 editiert.]

[Diese Nachricht wurde von autogis am 24. Mrz. 2009 editiert.]

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

autogis
Mitglied
Dr.-Ing. E-Technik


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

Beiträge: 185
Registriert: 09.02.2001

BricsCAD V18
Spatial Manager
MapGuide Open Source
PostGIS

erstellt am: 20. Mrz. 2009 16:21    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 Udo Hübner,

Um Solids, Du warst schnelle mit Deiner Frage, als ich auf Alfreds Frage antworten konnte.

Danke :-)

[Diese Nachricht wurde von autogis am 20. Mrz. 2009 editiert.]

[Diese Nachricht wurde von autogis am 20. Mrz. 2009 editiert.]

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


Ex-Mitglied

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

Hi,

folgender Code liefert Dir die Koordinaten des SOLIDS, ich hoffe ich hab's jetzt richtig verstanden  )

Code:
Dim tCoords As Geometry.Point3dCollection = New Geometry.Point3dCollection
Call CType(entCur, Solid).GetStretchPoints(tCoords)
If (tCoords IsNot Nothing) AndAlso (tCoords.Count > 0) Then
  For Each tPnt As Geometry.Point3d In tCoords
      Debug.Print(tPnt.ToString)
  Next
Else
  MsgBox("Solid-Abfrageefehler")
End If

- alfred -

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

autogis
Mitglied
Dr.-Ing. E-Technik


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

Beiträge: 185
Registriert: 09.02.2001

erstellt am: 20. Mrz. 2009 17:19    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 Alfred,

danke!! Genau das wars! 10 Punkte sollten angekommen sein.

Viele Grüße und ein schönes WE - Peter

[Diese Nachricht wurde von autogis am 20. Mrz. 2009 editiert.]

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