Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Konturerkennung

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:  Konturerkennung (2321 mal gelesen)
Klaus Raykowski
Mitglied
Programmierer

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

Beiträge: 4
Registriert: 29.01.2005

erstellt am: 29. Jan. 2005 10:36    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,
folgendes Problem:
In einer Zeichnung die Grundrisslinien von Räumen enthält soll eine Polylinie den Umriss des Raumes darstellen.
Der Bediener soll in so einen Raum klicken und das Programm muss alle
umliegenden Elemente (linien) als Kontur erkennen und automatisch eine Polylinie erzeugen.
Hat irgendjemand eine Idee wie man das am besten anfängt ?
(Punktabfragen und Poly erzeugen ist das kleiner Problem :-) )

------------------
mfg
Klaus Raykowski

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

Proxy
Ehrenmitglied
Stateless-DHCP v6-Paketfragmentierer


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

Beiträge: 1629
Registriert: 13.11.2003

Tastaturen, Mäuse,
Pladden, Monitore, ...,
einige AutoCADs 200x &
SWX 2kX

erstellt am: 31. Jan. 2005 07:36    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 Klaus Raykowski 10 Unities + Antwort hilfreich

Befehl Umgrenzung Erzeugt aus einer umgrenzten Fläche eine Region oder Polylinie in der Onlinehilfe nachschauen. Dieser ist genau das was du willst.

------------------
"Lisp?!?! Why the Hell did you pick the most arcane, obscure, and hopelessly-rooted-in-the-computer-science-department language in the world for an AutoCAD programming language?"  Read the whole story: The Autodesk File ca. 890 Seiten | 7500 KB PDF

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

Klaus Raykowski
Mitglied
Programmierer

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

Beiträge: 4
Registriert: 29.01.2005

erstellt am: 31. Jan. 2005 10:11    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
sorry habe vergessen zu erwähnen das das per Programm VBA
stattfinden soll.
Also mit gegebenem Punkt die umliegenden Linien finden und prüfen ob diese einen Linienzug ergeben.ö

------------------
mfg
Klaus Raykowski

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

Proxy
Ehrenmitglied
Stateless-DHCP v6-Paketfragmentierer


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

Beiträge: 1629
Registriert: 13.11.2003

Tastaturen, Mäuse,
Pladden, Monitore, ...,
einige AutoCADs 200x &
SWX 2kX

erstellt am: 31. Jan. 2005 13: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 Klaus Raykowski 10 Unities + Antwort hilfreich

IMHO ist das in VBA zwar bestimmt möglich jedoch ist es mit hunderten von Codezeilen verbunden und wer hat schon grossartig Bock drauf.

Code:

Private Function Boundary(ByVal XYpoint As Variant) As AcadLWPolyline
Const X As Byte = 0, Y As Byte = 1, Z As Byte = 2
Dim PrevTotal As Long
Dim XYstring As String
ThisDrawing.SetVariable "NOMUTT", 1
PrevTotal = ThisDrawing.ModelSpace.Count
XYstring = CStr(XYpoint(X)) & "," & CStr(XYpoint(Y))
ThisDrawing.SendCommand "._-boundary" & vbCr & "A" & vbCr & "_Island" & vbCr & "N" & vbCr & "N" & vbCr & "O" & vbCr & "_Polyline" & vbCr & vbCr & XYstring & vbCr & vbCr
If ThisDrawing.ModelSpace.Count > PrevTotal Then
Set Boundary = ThisDrawing.ModelSpace.Item(ThisDrawing.ModelSpace.Count - 1)
End If
ThisDrawing.SetVariable "NOMUTT", 0
End Function

------------------
"Lisp?!?! Why the Hell did you pick the most arcane, obscure, and hopelessly-rooted-in-the-computer-science-department language in the world for an AutoCAD programming language?"  Read the whole story: The Autodesk File ca. 890 Seiten | 7500 KB PDF

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

Klaus Raykowski
Mitglied
Programmierer

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

Beiträge: 4
Registriert: 29.01.2005

erstellt am: 31. Jan. 2005 14: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
bekomme folgenden Fehler
Befehl: ._-boundary
A
2D-Punkt oder Optionstitel wird benötigt.
_Island
2D-Punkt oder Optionstitel wird benötigt.
N
2D-Punkt oder Optionstitel wird benötigt.
N
2D-Punkt oder Optionstitel wird benötigt.
O
_Polyline
Ungültiger Optionstitel.
45,0253288786071,304,04083538229
2D-Punkt oder Optionstitel wird benötigt.

Habe einen Punkt innerhalb einer Polylinie gewählt.
Selber Fehler tritt auf bei Wahl eines Punktes
innerhalb eines geschlossenen Linienzuges.

------------------
mfg
Klaus Raykowski

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

Klaus Raykowski
Mitglied
Programmierer

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

Beiträge: 4
Registriert: 29.01.2005

erstellt am: 31. Jan. 2005 15:13    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
Danke für deine Idee war zwar auch schon auf Boundary gekommen
hatte aber ka wie das mit sendcommand zu bewerkstelligen ist.

Folgende Funktion macht jetzt das was es soll.(unter Vb.Net)
Der eine Fehler war in der Reihenfolge des Boundary Kommandos.
der andere im xy Koordinatenstring darf kein Komma in den Zahlen und dazwischen kein Leerzeichen sein. Mit cstr() geht das nicht.

Das mit NOMUTT ist gefährlich, da wenn der Befehl abbricht
Autocad in einem undefinierbaren zustand bleibt und sich die
Befehlsanzeige nicht mehr einschalten läßt.

Function Boundary(ByRef objAcadDWG As AcadDocument, ByVal XYpoint As Object) As AcadLWPolyline
        Dim PrevTotal As Long
        Dim XYstring As String
        Try
            'Meldungen unterdrücken
            ' objAcadDWG.SetVariable("NOMUTT", 1)
            'Anzahl der Elemente im Modelspace
            PrevTotal = objAcadDWG.ModelSpace.Count
            'Leerzeichen im String und Komma in den Zahlen führt zu einem Fehler
            XYstring = Trim(Str(XYpoint(0))) & "," & Trim(Str(XYpoint(1)))

  'Befehlsablauf
  '._-Boundary
  'Internen Punkt angeben oder [Optionen]: O
  'Option eingeben [Umgrenzungslinien/Inseln erkennen/Objekttyp]: O
  'Umgrenzungsobjekttyp eingeben [Region/Polylinie] <Polylinie>: P
  'Option eingeben [Umgrenzungslinien/Inseln erkennen/Objekttyp]: U
  'Bestimmen Sie einen Satz für Umgrenzung [Neu/Alles] <Alles>: N
  'Objekte(wählen)
  'Option eingeben [Umgrenzungslinien/Inseln erkennen/Objekttyp]:
  'Internen Punkt angeben oder [Optionen]:

  objAcadDWG.SendCommand("._-boundary" & vbCr & XYstring & vbCr & "O" & vbCr & "O" & vbCr & "P" & vbCr & "U" & vbCr & "N" & vbCr & vbCr & vbCr & vbCr)
            If objAcadDWG.ModelSpace.Count > PrevTotal Then
                'Das zuletzt erzeugte zurückgeben
          Boundary = objAcadDWG.ModelSpace.Item(objAcadDWG.ModelSpace.Count - 1)
            End If
        Catch ex As Exception
        Finally
            Boundary = Nothing
            'Meldungen wieder einschalten
            '  objAcadDWG.SetVariable("NOMUTT", 0)
        End Try
    End Function

Wenn du noch mehr solcher codesnippets hast immer her damit *g*

------------------
mfg
Klaus Raykowski

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