Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  layer Steuern über Journal file

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 NX
Autor Thema:  layer Steuern über Journal file (3693 mal gelesen)

Ex-Mitglied

erstellt am: 20. Feb. 2007 10:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hallo

Ich versuche gerade mehrere Sprachen auf einer Zeichnung unterzubringen.

Das heist ich habe 4 Textblöcke an einer Stelle, D,E,F,I. Ich schaffe es mit einem Macro auch diese ein zu blenden wie ich es brauche, da sie auf 4 verschiednen Layern liegen.

Soweit klappt das ja auch.

Nun wollte ich das ganze als Journal File machen, um ein wenig mehr Praxis im programmieren zu bekommen. Geht aber leider irgendwie nicht?

Ich würde eben gerne haben das ich das wie bei meinem Macro steuern kann drück ich auf E kommt english usw.

Und am liebsten wenn nix im layer drinne steht das ne Fehlermeldung kommt.

Weis jemand einen Rat? War die Erklärung verständlich?

------------------
Rundballvergewaltiger ( Fußballer) sollten für den Oskar nominiert werden. Am besten in der Gruppe Stunt. Den kein Stuntmann der Welt kann so durch die Luft fliegen, dabei schreien wie eine Sau beim Metzger, dazu Kilometer weit über den Rasen Rollen, sich dabei das Gesicht halten, obwohl er am Bein getroffen wurde, meist noch die anscheinend schmerzhaften, fast zum Tode führenden, Stellen wechseln von links nach rechts und oben nach unten, um dann gleich wieder Aufzustehen und weiter zu rennen.

ICH BIN DER CADMINISCHDRÄDÖR

SMario
Mitglied
Konstrukteur/Designer


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

Beiträge: 114
Registriert: 31.03.2005

FSC Celsius Workstation
CPU: Pentium 4 3.20GHz
Speicher: 2.00GB RAM
Grafik: Quadro FX 1400
Monitor: FSC P20-2
OS: Windows XP SP2
UG: NX4.0.2.2

erstellt am: 21. Feb. 2007 10: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

Moin isegal,

Zitat:
Original erstellt von isegal:
[...]
Das heist ich habe 4 Textblöcke an einer Stelle, D,E,F,I.
[...]
Ich würde eben gerne haben das ich das wie bei meinem Macro steuern kann drück ich auf E kommt english usw.

Ich nehme mal an, es wird eine Textbox eingeblendet in der man das "E" eingeben kann, richtig?

Hier mal schnell zusammengekloppt  (für NX4):

Code:
Option Strict On
Option Explicit On
Imports System
Imports NXOpen
Imports NXOpen.UI
Imports NXOpen.UF

Module ChangeLanguageLayer
Sub Main()
Dim theSession As Session = Session.GetSession()
'Test ob Part geladen
if theSession.Parts.Work is Nothing Then
    Windows.Forms.MessageBox.Show("Kein Part geladen!")
    Exit Sub
End If
Dim ufsSession As UFSession = UFSession.GetUFSession()
Dim workPart As Part = theSession.Parts.Work
'Strings fuer NXInputBox
Dim prompt As String = "Bitte Anfangsbuchstabe eingeben"
  Dim caption As String = "Welche Sprache?"
  Dim initialText As String = "D"
  'Anzahl der umzuschaltenden Layer
  Dim stateArray(3) As Layer.StateInfo
  'deutscher Layer
Dim dLayer As Integer = 11
  'englischer Layer
Dim eLayer As Integer = 12
'franzoesischer Layer
Dim fLayer As Integer = 13
'italienischer Layer
Dim iLayer As Integer = 14

Dim lm As Layer.LayerManager
Dim nxi As NXOpenUI.NxInputBox = New NXOpenUI.NXInputBox()
ufsSession.Ui.LockUgAccess(UFConstants.UF_UI_FROM_CUSTOM)
Try
Select Case nxi.GetInputString(prompt, caption, initialText)
Case = "D"
stateArray(0).Layer = dLayer
stateArray(0).State = Layer.State.Selectable
stateArray(1).Layer = eLayer
stateArray(1).State = Layer.State.Hidden
stateArray(2).Layer = fLayer
stateArray(2).State = Layer.State.Hidden
stateArray(3).Layer = iLayer
stateArray(3).State = Layer.State.Hidden
workPart.Layers.ChangeStates(stateArray, True)
Case = "E"
stateArray(0).Layer = dLayer
stateArray(0).State = Layer.State.Hidden
stateArray(1).Layer = eLayer
stateArray(1).State = Layer.State.Selectable
stateArray(2).Layer = fLayer
stateArray(2).State = Layer.State.Hidden
stateArray(3).Layer = iLayer
stateArray(3).State = Layer.State.Hidden
workPart.Layers.ChangeStates(stateArray, True)
Case = "F"
stateArray(0).Layer = dLayer
stateArray(0).State = Layer.State.Hidden
stateArray(1).Layer = eLayer
stateArray(1).State = Layer.State.Hidden
stateArray(2).Layer = fLayer
stateArray(2).State = Layer.State.Selectable
stateArray(3).Layer = iLayer
stateArray(3).State = Layer.State.Hidden
workPart.Layers.ChangeStates(stateArray, True)
Case = "I"
stateArray(0).Layer = dLayer
stateArray(0).State = Layer.State.Hidden
stateArray(1).Layer = eLayer
stateArray(1).State = Layer.State.Hidden
stateArray(2).Layer = fLayer
stateArray(2).State = Layer.State.Hidden
stateArray(3).Layer = iLayer
stateArray(3).State = Layer.State.Selectable
workPart.Layers.ChangeStates(stateArray, True)
Case Else
Windows.Forms.MessageBox.Show("Keine unterstützte Sprache!")
End Select
ufsSession.Abort.DisableAbort()
Finally
ufsSession.Ui.UnlockUgAccess(UFConstants.UF_UI_FROM_CUSTOM)
End Try
End Sub

Public Function GetUnloadOption(ByVal dummy As String) As Integer
    GetUnloadOption = UFConstants.UF_UNLOAD_IMMEDIATELY
End Function
End Module



Zitat:

Und am liebsten wenn nix im layer drinne steht das ne Fehlermeldung kommt.

So spontan wüsste ich (noch) keinen wirklich guten Ansatz  .


Ciao
Mario

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

SMario
Mitglied
Konstrukteur/Designer


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

Beiträge: 114
Registriert: 31.03.2005

FSC Celsius Workstation
CPU: Pentium 4 3.20GHz
Speicher: 2.00GB RAM
Grafik: Quadro FX 1400
Monitor: FSC P20-2
OS: Windows XP SP2
UG: NX4.0.2.2

erstellt am: 21. Feb. 2007 10: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

Nochmal Hallo isegal,

die Zeile "Dim lm As Layer.LayerManager" kannst du loeschen, die wird nicht gebraucht!

Ciao
Mario

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


Ex-Mitglied

erstellt am: 21. Feb. 2007 10:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi mario,

J ganz genau, das doofe ist das die module bei mir nicht so greifen wie ich das wollte *grübel*

Diese textboxen sind eine Idee die ich so mal in den Raum gestellt hatte, das kuriose ist nur das es mit Macros ohne texte super funktioniert sobald du aber den code startest spinnt die NXhuman an??? keine ahnung was das sein soll

------------------
Rundballvergewaltiger ( Fußballer) sollten für den Oskar nominiert werden. Am besten in der Gruppe Stunt. Den kein Stuntmann der Welt kann so durch die Luft fliegen, dabei schreien wie eine Sau beim Metzger, dazu Kilometer weit über den Rasen Rollen, sich dabei das Gesicht halten, obwohl er am Bein getroffen wurde, meist noch die anscheinend schmerzhaften, fast zum Tode führenden, Stellen wechseln von links nach rechts und oben nach unten, um dann gleich wieder Aufzustehen und weiter zu rennen.

ICH BIN DER CADMINISCHDRÄDÖR

SMario
Mitglied
Konstrukteur/Designer


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

Beiträge: 114
Registriert: 31.03.2005

FSC Celsius Workstation
CPU: Pentium 4 3.20GHz
Speicher: 2.00GB RAM
Grafik: Quadro FX 1400
Monitor: FSC P20-2
OS: Windows XP SP2
UG: NX4.0.2.2

erstellt am: 21. Feb. 2007 11: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

Hallo isegal,

Zitat:
Original erstellt von isegal:
Hi mario,

J ganz genau, das doofe ist das die module bei mir nicht so greifen wie ich das wollte *grübel*


Wie meinst du das?

Zitat:
Diese textboxen sind eine Idee die ich so mal in den Raum gestellt hatte, das kuriose ist nur das es mit Macros ohne texte super funktioniert sobald du aber den code startest spinnt die NXhuman an??? keine ahnung was das sein soll

Sorry, ich versteh' das auch nicht. Kannst du es mal anders umschreiben, was passiert. Ich schrieb ja, dass das Journal für NX4 ist, also Probleme nicht ausgeschlossen sind...


Ciao
Mario

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


Ex-Mitglied

erstellt am: 21. Feb. 2007 11:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Ok vergiss was ich gerade geschrieben habe, das war bullshit hatte etwas anders noch am laufen im hintergrund viel mir gerade auf.


Ich habe das ganze nun mal auf meine Versuchszeichnung angewandt.

Die Eingabaufforderung ist super so habe ich mir das vorgestellt gehabt.

Nun ist es aber so das danach nix passiert. *grübel*

Meine Schrift taucht nicht auf . Die layer habe ich dahingehend geändert gehabt.


Ich denke es fehlt der zusatz das der layer der mit "D" als beispiel ausgewählt wird auch auf der zeichnung erscheint, kann das sein
------------------
Rundballvergewaltiger ( Fußballer) sollten für den Oskar nominiert werden. Am besten in der Gruppe Stunt. Den kein Stuntmann der Welt kann so durch die Luft fliegen, dabei schreien wie eine Sau beim Metzger, dazu Kilometer weit über den Rasen Rollen, sich dabei das Gesicht halten, obwohl er am Bein getroffen wurde, meist noch die anscheinend schmerzhaften, fast zum Tode führenden, Stellen wechseln von links nach rechts und oben nach unten, um dann gleich wieder Aufzustehen und weiter zu rennen.

ICH BIN DER CADMINISCHDRÄDÖR

[Diese Nachricht wurde von isegal am 21. Feb. 2007 editiert.]

SMario
Mitglied
Konstrukteur/Designer


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

Beiträge: 114
Registriert: 31.03.2005

FSC Celsius Workstation
CPU: Pentium 4 3.20GHz
Speicher: 2.00GB RAM
Grafik: Quadro FX 1400
Monitor: FSC P20-2
OS: Windows XP SP2
UG: NX4.0.2.2

erstellt am: 21. Feb. 2007 12:35    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 isegal,

Zitat:
[...]
Nun ist es aber so das danach nix passiert. *grübel*

Meine Schrift taucht nicht auf . Die layer habe ich dahingehend geändert gehabt.


Ich denke es fehlt der zusatz das der layer der mit "D" als beispiel ausgewählt wird auch auf der zeichnung erscheint, kann das sein


Also im Code (Select Case...) wird abgefragt, was in der Textbox eingegeben wird. Alles was nicht D,E,F oder I ist, wird als Fehler betrachtet und es müsste eine Messagebox auftauchen. Passiert das nicht?

Ich hatte zum Testen einfach im Drafting eine Zeichnung angelegt mit vier Layern 11,12,13 und 14 und jeweils eine Text Deutsch, Englisch etc angelegt in den entsprechenden Layern und es hat wunderbar funktioniert...


Ciao
Mario

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


Ex-Mitglied

erstellt am: 21. Feb. 2007 12:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

dann mache ich was falsch. ich erstelle mal einen und poste es hier.

vieleicht liegt es am nx3

------------------
Rundballvergewaltiger ( Fußballer) sollten für den Oskar nominiert werden. Am besten in der Gruppe Stunt. Den kein Stuntmann der Welt kann so durch die Luft fliegen, dabei schreien wie eine Sau beim Metzger, dazu Kilometer weit über den Rasen Rollen, sich dabei das Gesicht halten, obwohl er am Bein getroffen wurde, meist noch die anscheinend schmerzhaften, fast zum Tode führenden, Stellen wechseln von links nach rechts und oben nach unten, um dann gleich wieder Aufzustehen und weiter zu rennen.

ICH BIN DER CADMINISCHDRÄDÖR

SMario
Mitglied
Konstrukteur/Designer


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

Beiträge: 114
Registriert: 31.03.2005

FSC Celsius Workstation
CPU: Pentium 4 3.20GHz
Speicher: 2.00GB RAM
Grafik: Quadro FX 1400
Monitor: FSC P20-2
OS: Windows XP SP2
UG: NX4.0.2.2

erstellt am: 21. Feb. 2007 13:03    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 isegal,

ich habe den Teil für die Layerumschaltung aus UG direkt mit der Record-Funktion erhalten. Vielleicht mal damit anfangen und schauen, was evtl. für Unterschiede auftauchen.
Ich habe halt nur die Textbox (NXInputBox) und die Abfrage (Select Case...) selbst hinzugefügt.


Ciao
Mario

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


Ex-Mitglied

erstellt am: 21. Feb. 2007 13:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi das ist das was ich versucht habe.

die record box gab mir gar keine Ausgabe in dem Fall irgendwas war/ist da verbogen.

So hab den Fehler gefunden. Und zwar war bei meinem ersten test Part der Work layer verbogen und daurch kam es zum abbruch nun geht es soweit.

Ich dank dir dafür, jetzt werde ich mich um die lösung bemühen die mir das ganze noch schmakhafter macht.

Nämlich Text eingeben können und absetzen wo man braucht und das es aufm Layer gleich ist.


Muss nur meine record funktion zum laufen bringen

------------------
Rundballvergewaltiger ( Fußballer) sollten für den Oskar nominiert werden. Am besten in der Gruppe Stunt. Den kein Stuntmann der Welt kann so durch die Luft fliegen, dabei schreien wie eine Sau beim Metzger, dazu Kilometer weit über den Rasen Rollen, sich dabei das Gesicht halten, obwohl er am Bein getroffen wurde, meist noch die anscheinend schmerzhaften, fast zum Tode führenden, Stellen wechseln von links nach rechts und oben nach unten, um dann gleich wieder Aufzustehen und weiter zu rennen.

ICH BIN DER CADMINISCHDRÄDÖR

[Diese Nachricht wurde von isegal am 21. Feb. 2007 editiert.]

SMario
Mitglied
Konstrukteur/Designer


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

Beiträge: 114
Registriert: 31.03.2005

FSC Celsius Workstation
CPU: Pentium 4 3.20GHz
Speicher: 2.00GB RAM
Grafik: Quadro FX 1400
Monitor: FSC P20-2
OS: Windows XP SP2
UG: NX4.0.2.2

erstellt am: 21. Feb. 2007 14:04    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 isegal,

also viel Hoffnung würde ich mir da nicht machen, die Record-Fuktion unterstützt nicht wirklich viele Funktionen. Besonders Export und Drucken war ein Krampf bis das mal einigermaßen lief.

Jetzt habe ich eine "Make Fake Metric Thread Dimension" Funktion geschrieben, die aus einem Zylinder-Maß ein Gewindebemaßung macht, und zwar für das gerade selektierte Maß bzw. Maße also geht auch gleich zehn Maße auf einmal umzuwandeln. Naja, das nur mal so am Rande.


Ansonsten noch viel Spass mit den Journals
Mario

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


Ex-Mitglied

erstellt am: 21. Feb. 2007 14:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Mrio,

joah das habe ich schon bemerkt aber es hilft mir teile zusammen zusuchen. Ich habe nun auch den code zusammen wie ich text auf eine zeichnung bekomme.

-Leider aber immer im Nullpunkt, ohne die möglichkeit ihn abzusetzen
-und ich krieg keine textbox rein das ich text einfügen kann

aber ich schaffe es ihn gleich auf den layer zu schieben

' NX 3.0.5.3
' Journal created by weim1131 on Wed Feb 21 14:53:50 2007 W. Europe Standard Time
Option Strict Off
Imports System
Imports NXOpen

Module NXJournal
Sub Main

Dim theSession As Session = Session.GetSession()
' ----------------------------------------------
'  Menu: Insert->Annotation...
' ----------------------------------------------
Dim session_UndoMarkId1 As Session.UndoMarkId
session_UndoMarkId1 = theSession.SetUndoMark(Session.MarkVisibility.Invisible, "Create Annotation")

Dim annotations_LetteringPreferences1 As Annotations.LetteringPreferences
annotations_LetteringPreferences1 = theSession.Parts.Work.Annotations.Preferences.GetLetteringPreferences()

Dim annotations_UserSymbolPreferences1 As Annotations.UserSymbolPreferences
annotations_UserSymbolPreferences1 = theSession.Parts.Work.Annotations.NewUserSymbolPreferences(Annotations.UserSymbolPreferences.SizeType.ScaleAspectRatio, 1.0, 1.0)

Dim stringArray1(0) As String
stringArray1(0) = "test"
Dim point3d1 As Point3d = New Point3d(0.0, 0.0, 0.0)
Dim annotations_Note1 As Annotations.Note
annotations_Note1 = theSession.Parts.Work.Annotations.CreateNote(stringArray1, point3d1, AxisOrientation.Horizontal, annotations_LetteringPreferences1, annotations_UserSymbolPreferences1)

theSession.SetUndoMarkVisibility(session_UndoMarkId1, "Create Annotation", Session.MarkVisibility.Visible)

Dim point3d2 As Point3d = New Point3d()
annotations_Note1.AnnotationOrigin = point3d2

Dim integer1 As Integer
integer1 = theSession.UpdateManager.DoUpdate(session_UndoMarkId1)

Dim session_UndoMarkId2 As Session.UndoMarkId
session_UndoMarkId2 = theSession.SetUndoMark(Session.MarkVisibility.Invisible, "Create Annotation")

Dim stringArray2(0) As String
stringArray2(0) = "test"
Dim point3d3 As Point3d = New Point3d(0.0, 0.0, 0.0)
Dim annotations_Note2 As Annotations.Note
annotations_Note2 = theSession.Parts.Work.Annotations.CreateNote(stringArray2, point3d3, AxisOrientation.Horizontal, annotations_LetteringPreferences1, annotations_UserSymbolPreferences1)

annotations_LetteringPreferences1.Dispose()
annotations_UserSymbolPreferences1.Dispose()
Dim integer2 As Integer
integer2 = theSession.UpdateManager.AddToDeleteList(annotations_Note2)

Dim integer3 As Integer
integer3 = theSession.UpdateManager.DoUpdate(session_UndoMarkId2)

theSession.DeleteUndoMark(session_UndoMarkId2, "Create Annotation")

' ----------------------------------------------
'  Menu: Tools->Journal->Stop
' ----------------------------------------------

End Sub
End Module

------------------
Rundballvergewaltiger ( Fußballer) sollten für den Oskar nominiert werden. Am besten in der Gruppe Stunt. Den kein Stuntmann der Welt kann so durch die Luft fliegen, dabei schreien wie eine Sau beim Metzger, dazu Kilometer weit über den Rasen Rollen, sich dabei das Gesicht halten, obwohl er am Bein getroffen wurde, meist noch die anscheinend schmerzhaften, fast zum Tode führenden, Stellen wechseln von links nach rechts und oben nach unten, um dann gleich wieder Aufzustehen und weiter zu rennen.

ICH BIN DER CADMINISCHDRÄDÖR

SMario
Mitglied
Konstrukteur/Designer


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

Beiträge: 114
Registriert: 31.03.2005

FSC Celsius Workstation
CPU: Pentium 4 3.20GHz
Speicher: 2.00GB RAM
Grafik: Quadro FX 1400
Monitor: FSC P20-2
OS: Windows XP SP2
UG: NX4.0.2.2

erstellt am: 22. Feb. 2007 11:34    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 isegal,

Zitat:
Original erstellt von isegal:
Hi Mrio,

joah das habe ich schon bemerkt aber es hilft mir teile zusammen zusuchen. Ich habe nun auch den code zusammen wie ich text auf eine zeichnung bekomme.


Das klappt soweit auch bei mir...

Zitat:
-Leider aber immer im Nullpunkt, ohne die möglichkeit ihn abzusetzen

Ist klar, weil du keine Möglichkeit zur Punktabfrage eingebaut hast (bsplw. Pointconstructor...)

Zitat:
-und ich krieg keine textbox rein das ich text einfügen kann

Einfach die paar Zeilen Code von gestern für die NXInputBox müssten genügen. bsplw. so:

Code:
'Strings fuer NXInputBox
Dim prompt As String = "Bitte Anfangsbuchstabe eingeben"
Dim caption As String = "Welche Sprache?"
Dim initialText As String = "D"

Dim nxi As NXOpenUI.NxInputBox = New NXOpenUI.NXInputBox() ufsSession.Ui.LockUgAccess(UFConstants.UF_UI_FROM_CUSTOM)
Try
  nxi.GetInputString(prompt, caption, initialText)
  ufsSession.Abort.DisableAbort()
Finally
  ufsSession.Ui.UnlockUgAccess(UFConstants.UF_UI_FROM_CUSTOM)
End Try


Damit du auf den eingegeben Text zugreifen kannst, musst du die Zeile  "nxi.Get..." benutzen, behandel es so. als ob es ein String wäre, also bsplw. Windows.Forms.MessageBox.Show(nxi.GetInputString(prompt, caption, initialText) das zeigt dir dann den eingegeben Text in einer MessageBox an. ABer du musst innerhalb des Try-Abschnitts bleiben, da der UG-Zugriff gesperrt ist. Ansonsten musst du eben eine String-Variable anlegen, in der du den Text zwischenspeicherst...


Zitat:
aber ich schaffe es ihn gleich auf den layer zu schieben

Da habe ich irgendwie keinen ABschnitt dazu in deinem Code gefunden  .

Deswegen habe ich mal ein Beispiel gemacht, das folgendermaßen abläuft.

1. Textbox zur Eingabe des Textes erscheint
2. Es erscheint der Pointconstruktor um einen Punkt auszuwählen
3. Das Note wird erzeugt
4. Das erzeugte Note wird auf den Layer "dLayer" (siehe Code) verschoben
5. Der Layer dLayer wird auf Selectable gestellt.

Ich habe auch nichts gefunden, das Note direkt auf einem speziellen Layer zu erzeugen.
Vielleicht wenn man schon den gewünschten Layer als Work-Layer hat.


Naja, vielleicht kannst du es brauchen, oder ist zumindest ein Ansatz auch im Bezug wegen der Punktabfrage:

Code:

Option Strict Off
Imports System
Imports NXOpen

Module NXJournal
Sub Main
'Auf welchen Layer soll der Text verschoben werden?
Dim dLayer As Integer = 11
'Einstellungen für Textbox
Dim prompt As String = "Bitte Text für Note eingeben"
Dim caption As String = "Text eingeben"
Dim initialText As String = "test"
'Einstellungen für Pointconstructor
Dim cue As String = "Bitte Punkt für Note wählen"

Dim theSession As Session = Session.GetSession()
Dim workPart As Part = theSession.Parts.Work

'setze Annotation Preferences
Dim annotations_LetteringPreferences1 As Annotations.LetteringPreferences
annotations_LetteringPreferences1 = theSession.Parts.Work.Annotations.Preferences.GetLetteringPreferences()
Dim annotations_UserSymbolPreferences1 As Annotations.UserSymbolPreferences
annotations_UserSymbolPreferences1 = theSession.Parts.Work.Annotations.NewUserSymbolPreferences(Annotations.UserSymbolPreferences.SizeType.ScaleAspectRatio, 1.0, 1.0)

'Textbox für Texteingabe
Dim ufsSession As NXOpen.UF.UFSession = NXOpen.UF.UFSession.GetUFSession()
Dim nxi As NXOpenUI.NxInputBox = New NXOpenUI.NXInputBox()
Dim stringArray1(0) As String

ufsSession.Ui.LockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
Try
stringArray1(0) = nxi.GetInputString(prompt, caption, initialText)
ufsSession.Abort.DisableAbort()
Finally
ufsSession.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
End Try

'Punktauswahl über Pointconstructor
Dim point_tag As NXOpen.Tag
Dim base_pt(2) As Double
Dim response As Integer

ufsSession.Ui.LockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
Try
    ufsSession.Ui.PointConstruct(cue, ufsSession.Ui.PointBaseMethod.PointCursorPos, point_tag, base_pt, response)
    ufsSession.Abort.DisableAbort()
Finally
    ufsSession.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
End Try
Dim point3d1 As Point3d = New Point3d(base_pt(0), base_pt(1), base_pt(2))

'Note erzeugen an selektierten Punkt erzeugen
Dim annotations_Note1 As Annotations.Note
annotations_Note1 = theSession.Parts.Work.Annotations.CreateNote(stringArray1, point3d1, AxisOrientation.Horizontal, annotations_LetteringPreferences1, annotations_UserSymbolPreferences1)
annotations_LetteringPreferences1.Dispose()
annotations_UserSymbolPreferences1.Dispose()

'Note auf dLayer verschieben
Dim displayModification1 As DisplayModification
displayModification1 = theSession.DisplayManager.NewDisplayModification()
displayModification1.NewLayer = dLayer

Dim objects1(0) As DisplayableObject
Dim note1 As Annotations.Note = annotations_Note1

objects1(0) = note1
displayModification1.Apply(objects1)
displayModification1.Dispose()

'Layer mit erzeugtem Note aktivieren
Dim stateArray(0) As Layer.StateInfo
stateArray(0).Layer = dLayer
stateArray(0).State = Layer.State.Selectable
workPart.Layers.ChangeStates(stateArray, True)
End Sub
End Module



Ansonsten noch viel Spass beim Probieren
Mario

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


Ex-Mitglied

erstellt am: 23. Feb. 2007 08:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Mario,

das mit dem Layer schiebn war ne ausgabe vom record.

habs nur aufgezeichnet das problem ist dabei die identifikation des textes den das proggi packen soll, was ich aber noch gelöst bekommen sollte.

dein ansatz ist spitze, das mit der message box hatte ich versucht zum was Eintragen, klappte nicht, habe aber in deinem script nun den fehler bei mir gefunden.

------------------
Rundballvergewaltiger ( Fußballer) sollten für den Oskar nominiert werden. Am besten in der Gruppe Stunt. Den kein Stuntmann der Welt kann so durch die Luft fliegen, dabei schreien wie eine Sau beim Metzger, dazu Kilometer weit über den Rasen Rollen, sich dabei das Gesicht halten, obwohl er am Bein getroffen wurde, meist noch die anscheinend schmerzhaften, fast zum Tode führenden, Stellen wechseln von links nach rechts und oben nach unten, um dann gleich wieder Aufzustehen und weiter zu rennen.

ICH BIN DER CADMINISCHDRÄDÖR


Ex-Mitglied

erstellt am: 23. Feb. 2007 14:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Mario,

also das script klappt super habe alles von meinem zeugs eingebunden.

aber leider krieg ich die Schriftart nicht modifiziert???

hier mein text siehst du den Fehler?

'setze Annotation Preferences
Dim annotations_LetteringPreferences1 As Annotations.LetteringPreferences
annotations_LetteringPreferences1 = theSession.Parts.Work.Annotations.Preferences.GetLetteringPreferences()
Dim annotations_UserSymbolPreferences1 As Annotations.UserSymbolPreferences
annotations_UserSymbolPreferences1 = theSession.Parts.Work.Annotations.NewUserSymbolPreferences(Annotations.UserSymbolPreferences.SizeType.ScaleAspectRatio, 1.0, 1.0)
Dim annotations_Lettering1 As Annotations.Lettering
annotations_Lettering1.Size = 5.0
annotations_Lettering1.CharacterSpaceFactor = 1.0
annotations_Lettering1.AspectRatio = 1.0
annotations_Lettering1.LineSpaceFactor = 1.0
annotations_Lettering1.Cfw.Color = 2
annotations_Lettering1.Cfw.Font = 1
annotations_Lettering1.Cfw.Width = Annotations.LineWidth.Thick

------------------
Rundballvergewaltiger ( Fußballer) sollten für den Oskar nominiert werden. Am besten in der Gruppe Stunt. Den kein Stuntmann der Welt kann so durch die Luft fliegen, dabei schreien wie eine Sau beim Metzger, dazu Kilometer weit über den Rasen Rollen, sich dabei das Gesicht halten, obwohl er am Bein getroffen wurde, meist noch die anscheinend schmerzhaften, fast zum Tode führenden, Stellen wechseln von links nach rechts und oben nach unten, um dann gleich wieder Aufzustehen und weiter zu rennen.

ICH BIN DER CADMINISCHDRÄDÖR

SMario
Mitglied
Konstrukteur/Designer


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

Beiträge: 114
Registriert: 31.03.2005

FSC Celsius Workstation
CPU: Pentium 4 3.20GHz
Speicher: 2.00GB RAM
Grafik: Quadro FX 1400
Monitor: FSC P20-2
OS: Windows XP SP2
UG: NX4.0.2.2

erstellt am: 24. Feb. 2007 15:01    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 isegal,

Zitat:
Original erstellt von isegal:
Hi Mario,

also das script klappt super habe alles von meinem zeugs eingebunden.

aber leider krieg ich die Schriftart nicht modifiziert???

hier mein text siehst du den Fehler?

'setze Annotation Preferences
Dim annotations_LetteringPreferences1 As Annotations.LetteringPreferences
annotations_LetteringPreferences1 = theSession.Parts.Work.Annotations.Preferences.GetLetteringPreferences()
Dim annotations_UserSymbolPreferences1 As Annotations.UserSymbolPreferences
annotations_UserSymbolPreferences1 = theSession.Parts.Work.Annotations.NewUserSymbolPreferences(Annotations.UserSymbolPreferences.SizeType.ScaleAspectRatio, 1.0, 1.0)
Dim annotations_Lettering1 As Annotations.Lettering
annotations_Lettering1.Size = 5.0
annotations_Lettering1.CharacterSpaceFactor = 1.0
annotations_Lettering1.AspectRatio = 1.0
annotations_Lettering1.LineSpaceFactor = 1.0
annotations_Lettering1.Cfw.Color = 2
annotations_Lettering1.Cfw.Font = 1
annotations_Lettering1.Cfw.Width = Annotations.LineWidth.Thick


freut mich, dass es schonmal soweit funktioniert  .

Du hast eigentlich keinen Fehler gemacht. Du fragst ja mit "GetLetteringPreferences" die Einstellungen für den Text ab und hast auch die Einstellungen entsprechend deinen Bedürfnissen angepasst, aber wo übergibst du die Einstellungen wieder zurück an NX  .

Du kannst mit "SetDimensionText", "SetToleranceText", "SetAppendedText" und "SetGeneralText" jeweils für die versch. Textarten (Dimension, Appended, Tolerance und General) von NX die Einstellungen übergeben.

Wenn du an deinen geposteten Code folgende Zeile einfügst kannst du besplw. die Einstellungen für General-Text übergeben:

Code:
annotations_LetteringPreferences1.SetGeneralText(annotations_Lettering1)

Hier noch ein paar Ergänzungen um bsplw. den Winkel und Ausrichtung zu ändern:

Code:
annotations_LetteringPreferences1.AlignmentPosition = Annotations.AlignmentPosition.MidLeft
annotations_LetteringPreferences1.HorizTextJust = Annotations.TextJustification.Center
annotations_LetteringPreferences1.Angle = 0.0

Ich hoffe das war verständlich und jetzt funktioniert alles.


Ciao und viel Spass beim Probieren.
Mario

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

SMario
Mitglied
Konstrukteur/Designer


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

Beiträge: 114
Registriert: 31.03.2005

FSC Celsius Workstation
CPU: Pentium 4 3.20GHz
Speicher: 2.00GB RAM
Grafik: Quadro FX 1400
Monitor: FSC P20-2
OS: Windows XP SP2
UG: NX4.0.2.2

erstellt am: 24. Feb. 2007 15: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

Nochmal Hallo isegal,

hast du schonmal einfach "Cancel" in der NXInputBox oder im PointConstructor gedrückt?

Hier steht, wie man die einzelnen Buttons abfragt: http://ww3.cad.de/foren/ubb/Forum442/HTML/000071.shtml#000003


Ciao und weiterhin viel Spass beim Probieren
Mario

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


Ex-Mitglied

erstellt am: 26. Feb. 2007 07:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Mario,

dás mit dem text habe ich auf diese Weise gelöst,

Dim annotations_LetteringPreferences1 As Annotations.LetteringPreferences
annotations_LetteringPreferences1 = theSession.Parts.Work.Annotations.Preferences.GetLetteringPreferences()
Dim annotations_UserSymbolPreferences1 As Annotations.UserSymbolPreferences
annotations_UserSymbolPreferences1 = theSession.Parts.Work.Annotations.NewUserSymbolPreferences(Annotations.UserSymbolPreferences.SizeType.ScaleAspectRatio, 1.0, 1.0)
Dim annotations_Lettering1 As Annotations.Lettering
annotations_LetteringPreferences1 = theSession.Parts.Work.Annotations.Preferences.GetLetteringPreferences()
annotations_Lettering1.Size = 5.0
annotations_Lettering1.CharacterSpaceFactor = 1.0
annotations_Lettering1.AspectRatio = 1.0
annotations_Lettering1.LineSpaceFactor = 1.0
annotations_Lettering1.Cfw.Color = 2
annotations_Lettering1.Cfw.Font = 1
annotations_Lettering1.Cfw.Width = Annotations.LineWidth.Thin
annotations_LetteringPreferences1.SetGeneralText(annotations_Lettering1)

kam ich gestern nach ein wenig tüfteln drauf *g* danke du warst nur schneller in der antwort.

Sag mal zeilenumbruch amche ich doch normalerweise mit true oder false get das in NX nicht?

------------------
Rundballvergewaltiger ( Fußballer) sollten für den Oskar nominiert werden. Am besten in der Gruppe Stunt. Den kein Stuntmann der Welt kann so durch die Luft fliegen, dabei schreien wie eine Sau beim Metzger, dazu Kilometer weit über den Rasen Rollen, sich dabei das Gesicht halten, obwohl er am Bein getroffen wurde, meist noch die anscheinend schmerzhaften, fast zum Tode führenden, Stellen wechseln von links nach rechts und oben nach unten, um dann gleich wieder Aufzustehen und weiter zu rennen.

ICH BIN DER CADMINISCHDRÄDÖR

[Diese Nachricht wurde von isegal am 26. Feb. 2007 editiert.]

SMario
Mitglied
Konstrukteur/Designer


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

Beiträge: 114
Registriert: 31.03.2005

FSC Celsius Workstation
CPU: Pentium 4 3.20GHz
Speicher: 2.00GB RAM
Grafik: Quadro FX 1400
Monitor: FSC P20-2
OS: Windows XP SP2
UG: NX4.0.2.2

erstellt am: 26. Feb. 2007 07:40    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 isegal,

Zitat:
Original erstellt von isegal:
Hi Mario,

dás mit dem text habe ich auf diese Weise gelöst,


freut mich, dass du selbst drauf gekommen bist.

Zitat:
Sag mal zeilenumbruch amche ich doch normalerweise mit true oder false get das in NX nicht?

Ich versteh' nicht ganz wo du einen Zeilenumbruch einfügen willst.
Meinst du mehrzeiligen Text erstellen?

Porbier es mal mit "Environment.NewLine" also bsplw.:

System.Windows.Forms.MessageBox.Show("Meine erste Zeile" & Environment.NewLine & "Meine zweite Zeile")

"Environment.NewLine" hat aber nichts mit NX zu tun, das kommt vom .NET Framework und funktioniert so bei allen Visual Basic.NET Programmen.

Ich denke aber nicht, dass es einfach wird, wenn man mehrzeiligen Text in eine NXInputBox eingeben will. Ist meiner Meinung nach eher für kurzen Text gedacht.

Für sowas benutze mache ich mir immer eine neue Klasse mit einem  Dialog aus .NET-Controls (mit SharpDevelop Forms Designer). Das ist aber ein bischen Arbeit.


Ciao
Mario

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


Ex-Mitglied

erstellt am: 26. Feb. 2007 08:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Mario

du hohlst ja mit diesen befehlen die textbox für die Texteingabe,

'Einstellungen für Textbox
Dim prompt As String = "Bitte Text für Note eingeben"
Dim caption As String = "Text eingeben"
Dim initialText As String = "test"

und definierst Sie ja hiermit

Dim ufsSession As NXOpen.UF.UFSession = NXOpen.UF.UFSession.GetUFSession()
Dim nxi As NXOpenUI.NxInputBox = New NXOpenUI.NXInputBox()
Dim stringArray1(1) As String
'stringArray1 (1) = "test"


ufsSession.Ui.LockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
Try
stringArray1(0) = nxi.GetInputString(prompt, caption, initialText)
ufsSession.Abort.DisableAbort()
Finally
ufsSession.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
End Try

Diese textbox kann aber nur eine Zeile einfügen.

Ich habe nun versucht mit Multiline = true das ganze zu brechen was mir bisher aber nicht gelungen ist da ich irgendwie egal wie ich es setzte nen rootscript error become.

vieleicht muss es ja nach dem befehl

Dim nxi As NXOpenUI.NxInputBox = New NXOpenUI.NXInputBox() eingefügt werden


------------------
Rundballvergewaltiger ( Fußballer) sollten für den Oskar nominiert werden. Am besten in der Gruppe Stunt. Den kein Stuntmann der Welt kann so durch die Luft fliegen, dabei schreien wie eine Sau beim Metzger, dazu Kilometer weit über den Rasen Rollen, sich dabei das Gesicht halten, obwohl er am Bein getroffen wurde, meist noch die anscheinend schmerzhaften, fast zum Tode führenden, Stellen wechseln von links nach rechts und oben nach unten, um dann gleich wieder Aufzustehen und weiter zu rennen.

ICH BIN DER CADMINISCHDRÄDÖR

SMario
Mitglied
Konstrukteur/Designer


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

Beiträge: 114
Registriert: 31.03.2005

FSC Celsius Workstation
CPU: Pentium 4 3.20GHz
Speicher: 2.00GB RAM
Grafik: Quadro FX 1400
Monitor: FSC P20-2
OS: Windows XP SP2
UG: NX4.0.2.2

erstellt am: 05. Mrz. 2007 10:04    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

Moin isegal,

Zitat:
Original erstellt von isegal:
[...]
Ich habe nun versucht mit Multiline = true das ganze zu brechen was mir bisher aber nicht gelungen ist da ich irgendwie egal wie ich es setzte nen rootscript error become.

Ich habe in der NX .NET-Reference nichts über eine die Möglichkeit gefunden mehr als eine Zeile in eine NXInputBox einzufügen.

Ich habe mal "versucht" eine selbst zu basteln:

Code:
Option Strict On

Imports System
Imports System.Windows.Forms
Imports System.IO
Imports System.IO.Path
Imports NXOpen
Imports NXOpen.UF
Imports NXOpenUI


Module MultiLineTextBox
Dim ufsSession As UFSession = NXOpen.UF.UFSession.GetUFSession()
Dim theSession As Session = Session.GetSession()
Dim workPart As Part = theSession.Parts.Work

'Einstellungen fuer NXTextBox
Dim strNXTextBox() As String
Dim prompt As String = "Bitte Text fuer Note eingeben"
Dim caption As String = "Text eingeben"
Dim initialText As String = "test"
Dim stringArray1(0) As String

'Auf welchen Layer soll der Text verschoben werden?
Dim dLayer As Integer = 14
'Einstellungen fuer Pointconstructor
Dim cue As String = "Bitte Punkt fuer Note waehlen"

Dim point_tag As NXOpen.Tag
Dim base_pt(2) As Double
Dim response As Integer

Sub Main
'Setze Session-Variablen
Dim theUI As UI = UI.GetUI()
Dim response As Integer

'Pruefe ob Teil geladen
If theSession.Parts.Work is Nothing Then
System.Windows.Forms.MessageBox.Show("No active Part loaded.", "Result")
Exit Sub
End If

'Work-in-Progress Dialog deaktivieren
ufsSession.Abort.DisableAbort()


Try
If ShowNXTextBox() = NXOpen.UF.UFConstants.UF_UI_OK Then
ufsSession.Ui.LockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
Try
    ufsSession.Ui.PointConstruct(cue, ufsSession.Ui.PointBaseMethod.PointCursorPos, point_tag, base_pt, response)
    ufsSession.Abort.DisableAbort()
Finally
    ufsSession.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
End Try

If response = NXOpen.UF.UFConstants.UF_UI_OK Then
Dim point3d1 As Point3d = New Point3d(base_pt(0), base_pt(1), base_pt(2))

'Note erzeugen an selektierten Punkt erzeugen
Dim annotations_Note1 As Annotations.Note

Dim annotations_LetteringPreferences1 As Annotations.LetteringPreferences
annotations_LetteringPreferences1 = theSession.Parts.Work.Annotations.Preferences.GetLetteringPreferences()
Dim annotations_UserSymbolPreferences1 As Annotations.UserSymbolPreferences
annotations_UserSymbolPreferences1 = theSession.Parts.Work.Annotations.NewUserSymbolPreferences(Annotations.UserSymbolPreferences.SizeType.ScaleAspectRatio, 1.0, 1.0)

'setze Annotation Lettering Preferences
annotations_LetteringPreferences1.AlignmentPosition = Annotations.AlignmentPosition.MidLeft
annotations_LetteringPreferences1.HorizTextJust = Annotations.TextJustification.Left
annotations_LetteringPreferences1.Angle = 75.0

'setze Annotation Lettering
Dim annotations_Lettering1 As Annotations.Lettering
annotations_Lettering1.Size = 15.0
annotations_Lettering1.CharacterSpaceFactor = 0.75
annotations_Lettering1.AspectRatio = 0.75
annotations_Lettering1.LineSpaceFactor = 1.0
annotations_Lettering1.Cfw.Color = 17
annotations_Lettering1.Cfw.Font = 1
annotations_Lettering1.Cfw.Width = Annotations.LineWidth.Thick
annotations_LetteringPreferences1.SetGeneralText(annotations_Lettering1)

stringArray1 = strNXTextBox
annotations_Note1 = theSession.Parts.Work.Annotations.CreateNote(stringArray1, point3d1, AxisOrientation.Horizontal, annotations_LetteringPreferences1, annotations_UserSymbolPreferences1)
annotations_LetteringPreferences1.Dispose()
annotations_UserSymbolPreferences1.Dispose()

''Note auf dLayer verschieben
'Dim displayModification1 As DisplayModification
'displayModification1 = theSession.DisplayManager.NewDisplayModification()
'displayModification1.NewLayer = dLayer
'
'Dim objects1(0) As DisplayableObject
'objects1(0) = annotations_Note1
'displayModification1.Apply(objects1)
'displayModification1.Dispose()
'
''Layer mit erzeugtem Note aktivieren
'Dim stateArray(0) As Layer.StateInfo
'stateArray(0).Layer = dLayer
'stateArray(0).State = Layer.State.Selectable
'workPart.Layers.ChangeStates(stateArray, True)
Else
Exit Sub
End If
Else
Exit Sub
End If
Finally
End Try
End Sub

Private Function ShowNXTextBox() As Integer
'Eingabe Dialog erstellen
Dim NXTextBox As MainForm = New MainForm()

Try
NXTextBox.SetString()
Catch
End Try

ufsSession.Ui.LockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
Try
'Eingabe Dialog erstellen und pruefen ob OK gedrueckt wurde...
If NXTextBox.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
strNXTextBox = NXTextBox.GetString
Return NXOpen.UF.UFConstants.UF_UI_OK
Else
stringArray1 = Nothing
Return NXOpen.UF.UFConstants.UF_UI_CANCEL
End If
Finally
    ufsSession.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
End Try
NXTextBox.Dispose()
End Function


Public Class MainForm
    Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

Public Sub New()
    MyBase.New()

    'This call is required by the Windows Form Designer.
    InitializeComponent()

    'Add any initialization after the InitializeComponent() call

End Sub

'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
    If disposing Then
        If Not (components Is Nothing) Then
            components.Dispose()
        End If
    End If
    MyBase.Dispose(disposing)
End Sub

'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
Private NXTextBox As System.Windows.Forms.TextBox
Private btnOK As System.Windows.Forms.Button
Private lblNXTextBox As System.Windows.Forms.Label
Private btnCancel As System.Windows.Forms.Button

<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.btnOK = New System.Windows.Forms.Button
Me.lblNXTextBox = New System.Windows.Forms.Label
Me.btnCancel = New System.Windows.Forms.Button
Me.NXTextBox = New System.Windows.Forms.TextBox
Me.SuspendLayout
'
'btnOK
'
Me.btnOK.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles)
Me.btnOK.FlatStyle = System.Windows.Forms.FlatStyle.System
Me.btnOK.Font = New System.Drawing.Font("Tahoma", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
Me.btnOK.Location = New System.Drawing.Point(93, 99)
Me.btnOK.Name = "btnOK"
Me.btnOK.Size = New System.Drawing.Size(93, 24)
Me.btnOK.TabIndex = 3
Me.btnOK.Text = "OK"
Me.btnOK.DialogResult = DialogResult.OK
'
'lblNXTextBox
'
Me.lblNXTextBox.FlatStyle = System.Windows.Forms.FlatStyle.System
Me.lblNXTextBox.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
Me.lblNXTextBox.Location = New System.Drawing.Point(17, 14)
Me.lblNXTextBox.Name = "lblNXTextBox"
Me.lblNXTextBox.Size = New System.Drawing.Size(203, 13)
Me.lblNXTextBox.TabIndex = 10
Me.lblNXTextBox.Text = prompt
'
'btnCancel
'
Me.btnCancel.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles)
Me.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.btnCancel.FlatStyle = System.Windows.Forms.FlatStyle.System
Me.btnCancel.Font = New System.Drawing.Font("Tahoma", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
Me.btnCancel.Location = New System.Drawing.Point(193, 99)
Me.btnCancel.Name = "btnCancel"
Me.btnCancel.Size = New System.Drawing.Size(93, 24)
Me.btnCancel.TabIndex = 4
Me.btnCancel.Text = "Cancel"
'Me.btnCancel.DialogResult = DialogResult.Cancel

'
'NXTextBox
'
Me.NXTextBox.BackColor = System.Drawing.SystemColors.Window
Me.NXTextBox.Enabled = true
Me.NXTextBox.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
Me.NXTextBox.Location = New System.Drawing.Point(17, 34)
Me.NXTextBox.Name = "NXTextBox"
Me.NXTextBox.ReadOnly = false
Me.NXTextBox.Size = New System.Drawing.Size(272, 50)
Me.NXTextBox.Multiline = true
Me.NXTextBox.TabIndex = 0
'
'MainForm
'
Me.BackColor = System.Drawing.SystemColors.Control
Me.ClientSize = New System.Drawing.Size(310, 132)
Me.Controls.Add(Me.NXTextBox)
Me.Controls.Add(Me.btnCancel)
Me.Controls.Add(Me.btnOK)
Me.Controls.Add(Me.lblNXTextBox)
Me.Name = "MainForm"
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
Me.Text = caption
Me.ResumeLayout(false)
Me.PerformLayout
End Sub
#End Region

Public Function GetString() As String()
  'Return Me.NXTextBox.Text
  Return Me.NXTextBox.Lines
End Function

Public Function SetString() As String
    Me.NXTextBox.Text = initialText
    Me.NXTextBox.SelectionStart = 0
  Me.NXTextBox.SelectionLength = Len(Me.NXTextBox.Text)
End Function
End Class

Public Function GetUnloadOption(ByVal dummy As String) As Integer
GetUnloadOption = UFConstants.UF_UNLOAD_IMMEDIATELY
End Function
End Module


Die Funktion ist ähnlich, wie die Original NXInputBox, ich habe sie einfach mal NXTextBox genannt.

Komischerweise läuft das Ding total schlecht, irgendwo steckt noch ein Bug, der mir den Dialog scheinbar in manchen Situationen nicht richtig schliesst, es erscheint dann eine "Win32Exception: Klasse bereits vorhanden"  , für mein Screenshot-Funktion funktionierte das bestens.

Damit die Fehlermeldung nicht mehr erscheint musst du NX komplett beenden  .

Ein anderer Bug ist in dem kommentierten Bereich ziemlich am Ende des Codes, dort wird wie oben schon beschrieben, das erzeugte Note auf einen Layer verschoben, aber in dem neuen Code verschwinden Sie ins Nirvana  .

Vielleicht findest Du oder jemand Anderes meinen Denk/Codefehler.


Ciao
Mario

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


Ex-Mitglied

erstellt am: 06. Mrz. 2007 10:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Mario,

also bei mir passt alles in NX3 bekomme weder Fehlermeldung noch verschindet etwas im Nirvana?

hab nur die texteinstellungen verändert und die Layersettings

------------------
Big Brother is watching you *grins*

Der insider wird schon wissen das ER gemeint ist

Grüezi

SMario
Mitglied
Konstrukteur/Designer


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

Beiträge: 114
Registriert: 31.03.2005

FSC Celsius Workstation
CPU: Pentium 4 3.20GHz
Speicher: 2.00GB RAM
Grafik: Quadro FX 1400
Monitor: FSC P20-2
OS: Windows XP SP2
UG: NX4.0.2.2

erstellt am: 06. Mrz. 2007 11:37    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

Moin isegal,

Zitat:
Original erstellt von isegal:
Hi Mario,

also bei mir passt alles in NX3 bekomme weder Fehlermeldung noch verschindet etwas im Nirvana?

hab nur die texteinstellungen verändert und die Layersettings


na umso besser, bei mir kam der Fehler auch nicht jedesmal, sondern auch nur manchmal, ich weiss jedoch nicht warum  .
Naja, vielleicht liegt es an NX4...


Ciao
Mario

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


Ex-Mitglied

erstellt am: 06. Mrz. 2007 13:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Ich hatte eine runtime error aber der kam wohl vom nx und hatte nix mit dem tool zu tun

------------------
Big Brother is watching you *grins*

Der insider wird schon wissen das ER gemeint ist

Grüezi



Projektleiter Sonderanlagenbau / zukunftsweisende Systeme (m/w/d)
Unser Mandant ist ein Familienunternehmen, das sich auf die Herstellung, den Vertrieb, die Wartung und die Reparatur von Hebezeugen und Fördermitteln spezialisiert hat.

„Beam me up! Der Weltraum – unendliche Weiten. Wir schreiben das Jahr 2024…“ und diese Weiten werden endlich, die Verkehrsdichte nimmt zu und so vertrauen die Kunden rund um den Globus auf diese hochqualitativen automatisierten Systeme im urbanen Raum....
Anzeige ansehenProjektmanagement
MarckyMON
Mitglied
Programmierer


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

Beiträge: 35
Registriert: 07.07.2008

erstellt am: 23. Apr. 2009 15:34    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

Morsche,

das Win32Exception-Problem hatte ich auch noch, habe es aber hinbekommen... guck mal aufm Thread: http://ww3.cad.de/foren/ubb/Forum442/HTML/000482.shtml

Gruß,
char *name = "Marc";

------------------
Gruß,
char *name = "Marc";

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