Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Body Auswahl für StockSizeBuilder

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:  Body Auswahl für StockSizeBuilder (2422 mal gelesen)
stevel
Mitglied



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

Beiträge: 14
Registriert: 01.02.2005

Software:
Windows 7 x64
NX 7.5
TCEng 2005 SR1 MP5
Hardware:
MacBook Pro

erstellt am: 26. Sep. 2011 22: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 Zusammen,

ich möchte ein aufgenommenes Journal in C# umbauen damit ich beim nächsten Lauf einen anderen Body auswählen kann, aber es funktioniert nicht.

Original Journal:

Code:
using System;
using NXOpen;

public class NXJournal
{
  public static void Main(string[] args)
  {
    Session theSession = Session.GetSession();
    Part workPart = theSession.Parts.Work;
    Part displayPart = theSession.Parts.Display;
    // ----------------------------------------------
    //  Menu: Tools->Process Specific->Mold Wizard->Mold Tools->Stock Size...
    // ----------------------------------------------
    NXOpen.Session.UndoMarkId markId1;
    markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start");
   
    Part part1;
    part1 = theSession.Parts.Work;
   
    NXOpen.Tooling.StockSizeBuilder stockSizeBuilder1;
    stockSizeBuilder1 = workPart.ToolingManager.StockSizes.CreateStocksizeBuilder();
   
    stockSizeBuilder1.SizePrecision = 3;
   
    theSession.SetUndoMarkName(markId1, "Stock Size Dialog");
   
    NXOpen.Tooling.StockSizeBuilder.Shape enumstocktype1;
    enumstocktype1 = stockSizeBuilder1.StockType;
   
    NXOpen.Tooling.StockSizeBuilder.Cylinder enumcylindertype1;
    enumcylindertype1 = stockSizeBuilder1.CylinderType;
   
    int integerprecision1;
    integerprecision1 = stockSizeBuilder1.SizePrecision;
   
    Body body1 = (Body)workPart.Bodies.FindObject("BLOCK(0)");
    bool added1;
    added1 = stockSizeBuilder1.SelectBody.Add(body1);
   
    stockSizeBuilder1.StringStock = "80.000 X 80.000 X 80.000";
   
    NXOpen.Session.UndoMarkId markId2;
    markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Stock Size");
   
    NXObject nXObject1;
    nXObject1 = stockSizeBuilder1.Commit();
   
    theSession.DeleteUndoMark(markId2, null);
   
    theSession.SetUndoMarkName(markId1, "Stock Size");
   
    theSession.Parts.SetWork(workPart);
   
    workPart = theSession.Parts.Work;
    stockSizeBuilder1.Destroy();
   
    // ----------------------------------------------
    //  Menu: Tools->Journal->Stop Recording
    // ----------------------------------------------
   
  }
  public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; }
}


und hier meine Version:

Code:
using System;
using NXOpen;
using NXOpenUI;

public class NXJournal
{
  public static void Main(string[] args)
  {
    Session theSession = Session.GetSession();
    Part wp = theSession.Parts.Work;
    NXObject selobj = null;
    Point3d cursor = default(Point3d);
    UI theUI = UI.GetUI();

    NXOpen.Tooling.StockSizeBuilder stockSizeBuilder1;
    stockSizeBuilder1 = wp.ToolingManager.StockSizes.CreateStocksizeBuilder();

    stockSizeBuilder1.SizePrecision = 2;

    NXOpen.Tooling.StockSizeBuilder.Shape enumstocktype1;
    enumstocktype1 = stockSizeBuilder1.StockType;

    NXOpen.Tooling.StockSizeBuilder.Cylinder enumcylindertype1;
    enumcylindertype1 = stockSizeBuilder1.CylinderType;

    int integerprecision1;
    integerprecision1 = stockSizeBuilder1.SizePrecision;
   
    theUI.SelectionManager.SelectObject("Select Some Body", "Selection", Selection.SelectionScope.WorkPart, true, false, out selobj, out cursor);
   
    bool added1;
    added1 = stockSizeBuilder1.SelectBody.Add((Body)selobj); //true!!
    bool valid1;
    valid1 = stockSizeBuilder1.Validate(); //false!!
   
    try
    {
        NXObject nXObject1;
        nXObject1 = stockSizeBuilder1.Commit();
    }
    catch (Exception ex)
    {
        //NXOpen.NXException: Internal error: memory access violation
        //bei NXOpen.Builder.Commit()
        //bei NXJournal.Main(String[] args) in c:\Users\...\NXJournals5212\journal.cs:Zeile 39.
    }
   
    stockSizeBuilder1.Destroy();
  }
}


Wenn ich mir die Werte meines Bodys als String ausgeben lasse bekomme ich eine Body ID, aber irgendwie scheint er den Body trotzdem nicht anzunehmen...
Beim stockSizeBuilder1.Validate() kommt auch schon false heraus und beim Commit dann die Exception.

Kann mir jemand sagen was ich bei meiner Auswahl falsch mache?
Oder ist das Problem ganz wo anders?
Sobald ich die Exception los bin möchte ich dann den Wert noch mit

Code:
string myStockSize = stockSizeBuilder1.StringStock;

abfragen, aber das ist noch weit hin...

mfg Stephan

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

mseufert
Moderator
Freiberuflicher CAD/CAM Ingenieur


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

Beiträge: 2624
Registriert: 18.10.2005

HP Z420
WIN7 64 Win 10
UG NX6-1980
3D Printer Prusa MK2 S

erstellt am: 28. Sep. 2011 08: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 Nur für stevel 10 Unities + Antwort hilfreich

Hallo Stephan,

bei der Selektion gibt's keinen Filter, daher ist das, vom Selectionmanager gelieferte NXObject evtl. kein Body. Merkwürdig ist dann nur, daß das Objekt bei SelectBody.Add ohne Fehler angenommen wird.

Gruß, Michael

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

stevel
Mitglied



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

Beiträge: 14
Registriert: 01.02.2005

Software:
Windows 7 x64
NX 7.5
TCEng 2005 SR1 MP5
Hardware:
MacBook Pro

erstellt am: 01. Okt. 2011 00: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,

in meinem Test Teil ist nur ein Körper drinnen...
mit GetType() bekomme ich "NXOpen.Body" zurück, das sollte doch passen?

Kanns vielleicht mal jemand mit ner anderen Version probieren? Hab 7.5.4.4 MP2 x64, bei NX 8 geht irgendwie gar nix, da is ein BUG drinnen (Hab schon nen PR).

Danke
Stephan

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

mseufert
Moderator
Freiberuflicher CAD/CAM Ingenieur


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

Beiträge: 2624
Registriert: 18.10.2005

HP Z420
WIN7 64 Win 10
UG NX6-1980
3D Printer Prusa MK2 S

erstellt am: 01. Okt. 2011 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 Nur für stevel 10 Unities + Antwort hilfreich

Hallo Stephan,

Type Body sollte o.k. sein. Vergleich' doch mal mit dem aufgezeichneten Journal, falls dort das commit funktioniert.

Gruß, Michael

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

stevel
Mitglied



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

Beiträge: 14
Registriert: 01.02.2005

Software:
Windows 7 x64
NX 7.5
TCEng 2005 SR1 MP5
Hardware:
MacBook Pro

erstellt am: 01. Okt. 2011 21: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

Hi,

da bekomme ich den gleichen Body Tag und auch NXOpen.Body raus...
Jetzt versteh ich auch noch nicht wie das Journal auf das hier kommt:

Code:
stockSizeBuilder1.StringStock = "80.000 X 80.000 X 80.000";
darum geht es mir ja eigentlich. Sobald ich das rein setze läufts, aber nicht mal im Journal wird dar Wert aktuallisiert wenn ich meinen Block ändere...

Wenn ich versuche mit

Code:
string stockVal = stockSizeBuilder1.StringStock;
den Wert zu holen bleibt der string leer und ich bekomme wieder die "memory acces violation" in der Zeile mit dem Commit um die Ohren...

ich verstehs ned

Stephan

[Diese Nachricht wurde von stevel am 01. Okt. 2011 editiert.]

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



Praktikant / Werkstudent (m/w/d) als Assistenz der Bauleitung

GOLDBECK?realisiert zukunftsweisende Immobilien in Europa. Wir verstehen Gebäude als Produkte und bieten alle Leistungen aus einer Hand: vom Design über den Bau bis zu Services im Betrieb. Aktuell beschäftigt unser Familienunternehmen mehr als 12.000 Mitarbeitende an über 100 Standorten bei einer?Gesamtleistung von über 6 Mrd. Euro. Unser Anspruch ?building?excellence? steht dabei für Spitzenleistungen ...

Anzeige ansehenAssistenz, Sekretariat
mseufert
Moderator
Freiberuflicher CAD/CAM Ingenieur


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

Beiträge: 2624
Registriert: 18.10.2005

HP Z420
WIN7 64 Win 10
UG NX6-1980
3D Printer Prusa MK2 S

erstellt am: 03. Okt. 2011 10:49    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 stevel 10 Unities + Antwort hilfreich

Hallo Stephan,

ich kann, wegen fehlender CAM-Lizenz leider nur Vermutungen anstellen. Hier die nächste: In Deinem Code wird für den StockType ein Zylinder angegeben. Der Stocksize läßt allerdings auf eine Box schließen. Evtl. liegt hier ein Widerspruch, der zur Exception führt.

Gruß, Michael

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