Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  AutoCad-Hauptfenster ist nicht sichtbar

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:  AutoCad-Hauptfenster ist nicht sichtbar (2199 mal gelesen)
Theo37
Mitglied
Techniker


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

Beiträge: 423
Registriert: 08.10.2008

ACAD 2019
WIN 7 64bit
Intel Xenon CPU E5-1620 3.60GHz
16GB RAM

erstellt am: 28. Sep. 2010 14:39    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 an Alle,

ich habe folgendes Problem:

Ich öffne eine userform mit showdialog. Lasse dem benutzer ein paar eintragungen machen. Dann schließe ich die form wieder mit hide und dispose. Anschließend möchte ich dem Benutzer ein Attribut auswählen lassen. Dazu verwende ich:
ThisDrawing.Utility.GetSubEntity(Ding, Point, Matrix, Context, "Nächstes Attribut: ")

An dieser stelle bekomme ich die Fehlermeldung "AutoCad-Hauptfenster ist nicht sichtbar"

Wie vermeide ich das. Danke.
Theo

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


Ex-Mitglied

erstellt am: 28. Sep. 2010 19:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

wenn Du den Fokus in einem Formular hast, dass Du dann 'unterm Hintern wegputzt', dann kann es durchaus mal vorkommen, dass keine App den Fokus hat (zumindest wenn das Form nicht modal gestartet war, ist die Gefahr dazu ziemlich groß).

Was mich aber doch wundert: eigentlich solltest Du mit der Maus dann das AutoCAD-Fenster aktivieren können. Wie sieht denn in diesem Zustand der Cursor aus? Fadenkreuz oder so als wäre AutoCAD ausgelastet?

Probier mal (hab's jetzt nur mal im VBA von Syntax her abgeluxt, nicht mit dotNET probiert):
AppActivate ThisDrawing.Application.Caption

- alfred -

PS: den Code vor und nach Form.Hide wäre ev. wichtig, wenn Du den so isolieren kannst, dass etwas lesbares für Nichtwisser (Deines GesamtCodes) herauskommt.

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

Theo37
Mitglied
Techniker


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

Beiträge: 423
Registriert: 08.10.2008

erstellt am: 29. Sep. 2010 09: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

Guten Morgen Alfred,

wenn ich aus VB heraus debugge, dann bekomme ich die Fehlermeldung an der Programzeile. Wenn ich den Befehl in ACAD selber starte dann kommt die Fehlermeldung in AutoCAD. Das Program(AutoCad) ist dabei ganz normal.

Wenn ich die zeile:
AppActivate ThisDrawing.Application.Caption

ausführe, dann kommt die Fehlermeldung: "Der Prozess(0) wurde nicht gefunden"

Ein Auszug aus dem Code:
Sub aktion()

        Dim Ding As AcadAttributeReference
        Dim Point As Object
        Dim Matrix As Object
        Dim Context As Object
        Dim Ersetzen As Boolean
        Dim Antwort As MsgBoxResult
        Stellen = CType(myForm.TextBox2.Text, Integer)
        Start = CType(myForm.TextBox3.Text, Integer)
        Text = myForm.TextBox1.Text
        myForm.Dispose()
        Do While Weiter = True

            VorText = Text & Nullen & Start.ToString
            Try
            AppActivate(ThisDrawing.Application.Caption)
            ThisDrawing.Utility.GetSubEntity(Ding, Point, Matrix, Context, "Nächstes Attribut: ")

            If Ersetzen Then Ding.TextString = VorText
            If Ersetzen = False Then Ding.TextString = Ding.TextString & VorText
            Weiter = True
            Start = Start + 1
            Catch ex As Exception
            Antwort = MsgBox("Fertig?", MsgBoxStyle.YesNo, "Zahl")
            If Antwort = MsgBoxResult.No Then Weiter = True
            End Try
        Loop
    End Sub

Wenn ich es so mache, also mit dem Try, dann bekomme ich keine Fehlermeldung, sondern es kommt sofort die MSGbox.
Lasse ich das Try weg, kommt unweigerlich die Fehlermeldung.

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

Theo37
Mitglied
Techniker


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

Beiträge: 423
Registriert: 08.10.2008

ACAD 2019
WIN 7 64bit
Intel Xenon CPU E5-1620 3.60GHz
16GB RAM

erstellt am: 29. Sep. 2010 14:41    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,

ich habe das Problem jetzt gelöst indem ich alle Prozeduren direkt von der Klasse aus starte und nicht von der Userform aus. Ist zwar etwas umständlicher, funktioniert aber.
Ich verstehe zwar nicht ganz wieso, aber irgendwie hatte dieses Problem wieder etwas mit:
    Public Shared myForm As Zahldia = Nothing
  myForm = New Zahldia
zu tun.

Eine andere Frage habe ich noch. Wenn ich dem User mit GetSubEntity ein Attribut auswählen lasse, dann erwischt man sehr oft einen Solid der dahinter liegt. Gibt es ne Möglichkeit daß nur noch attribute ausgewählt werden, oder daß zumindest die Wahrscheinlichkeit steigt eines zu erwischen. ich wäre für jeden Tipp dankbar. mein bisheriger Code dazu:


Try
            ThisDrawing.Utility.GetSubEntity(Ding, Point, Matrix, Context, "Attribut: ")
            myForm.TextBox1.Text = Ding.TextString
        Catch ex As Exception
            MsgBox("Sorry das ging schief.")
        End Try

Danke Theo

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


Ex-Mitglied

erstellt am: 30. Sep. 2010 10:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

ich hätte in diesem Fall (beim ersten Klick nicht die AttributReference erwischt) den retournieren Punkt dazu verwendet, um nachzuhaken.

Also erstmal normale Vorgehensweise, wie Du diese hast.
Wurde kein Attribut erwischt, dann hol Dir die Attribute der BlockReference, für jedes Attribut die Extents (BoundingBox) und guck nach, ob der zuvor retournierte Punkt innerhalb oder ausserhalb der Boundingbox liegt.
Vorsicht natürlich dabei: bei nicht waagrecht oder nicht senkrecht gestellten Attributen wird die BoundingBox relativ groß und kann ein Punkt könnte da schon innerhalb mehrerer Extents liegen.

- alfred -

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

Theo37
Mitglied
Techniker


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

Beiträge: 423
Registriert: 08.10.2008

erstellt am: 30. Sep. 2010 14: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

Hallo Alfred,
an deinen Vorschlag traue ich mich ehrlich gesagt nicht heran.
Ich denke das könnte ganz schön schwierig werden und auch zur Laufzeit störanfällig sein.
ich habs mal mit ner Krücke probiert. Und habe folgenden Code eingebaut:

      Dim Solid as Boolean
      Solid = ThisDrawing.Preferences.SolidFill
        ThisDrawing.Preferences.SolidFill = False
        ThisDrawing.Regen(AcRegenType.acActiveViewport)
.
.
.

Ende:
        ThisDrawing.Preferences.SolidFill = Solid

Funktioniert eigentlich recht gut, nur bei sehr großen zeichnungen, dauert das Regenerieren etwas. Ist aber eigentlich nicht schlimm.
Nur das Zurückstellen am Ende funktioniert nicht. Ich denke es liegt an: Solid = ThisDrawing.Preferences.SolidFill
Wie muß ich den Wert übergeben damit Solid danach seinen Wert behält und nicht mehr ändert.

Danke, Theo

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


Ex-Mitglied

erstellt am: 30. Sep. 2010 14:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

probiers mal mit der Variable FILLMODE auf 0 bzw. danach zurück auf 1 stellen.

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