| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Punkt mit Namen erstellen NX Journal (5834 mal gelesen)
|
Kaichi Mitglied
Beiträge: 26 Registriert: 07.11.2013 NX 8.5.2.3 Catia V5R19
|
erstellt am: 19. Nov. 2013 15:26 <-- editieren / zitieren --> Unities abgeben:
Hi Zusammen, ich habe folgendes NX Journal erstellt: ______________________________________________________________ Option Strict Off Imports System Imports NXOpen Imports System.Windows.Forms Module Module1 Dim theSession As Session = Session.GetSession() Public workPart As Part = theSession.Parts.Work Sub Main() 'Punkt erstellen Dim unit1 As Unit = CType(workPart.UnitCollection.FindObject("MilliMeter"), Unit) Dim expression1 As Expression expression1 = workPart.Expressions.CreateSystemExpressionWithUnits("p1_x=10", unit1) Dim scalar1 As Scalar scalar1 = workPart.Scalars.CreateScalarExpression(expression1, Scalar.DimensionalityType.None, SmartObject.UpdateOption.WithinModeling) Dim expression2 As Expression expression2 = workPart.Expressions.CreateSystemExpressionWithUnits("p1_y=20", unit1) Dim scalar2 As Scalar scalar2 = workPart.Scalars.CreateScalarExpression(expression2, Scalar.DimensionalityType.None, SmartObject.UpdateOption.WithinModeling) Dim expression3 As Expression expression3 = workPart.Expressions.CreateSystemExpressionWithUnits("p1_z=30", unit1) Dim scalar3 As Scalar scalar3 = workPart.Scalars.CreateScalarExpression(expression3, Scalar.DimensionalityType.None, SmartObject.UpdateOption.WithinModeling) Dim point1 As Point point1 = workPart.Points.CreatePoint(scalar1, scalar2, scalar3, SmartObject.UpdateOption.WithinModeling) point1.SetVisibility(SmartObject.VisibilityOption.Visible) 'Punkt im Strukturbaum anzeigen Dim nullFeatures_Feature As Features.Feature = Nothing Dim pointFeatureBuilder1 As Features.PointFeatureBuilder pointFeatureBuilder1 = workPart.BaseFeatures.CreatePointFeatureBuilder(nullFeatures_Feature) pointFeatureBuilder1.Point = point1 Dim nXObject1 As NXObject nXObject1 = pointFeatureBuilder1.Commit() pointFeatureBuilder1.Destroy() End Sub Public Function GetUnloadOption(ByVal dummy As String) As Integer
'Unloads the image when the NX session terminates GetUnloadOption = NXOpen.Session.LibraryUnloadOption.AtTermination End Function End Module ______________________________________________________________ Es erstellt einen Punkt bei X=10 Y=20 Z=30 und zeigt diesen im Strukturbaum an. Ich möchte diesen Punkt aber umbenennen. Allerdings wird im Strukturbaum standardmäßig POINT(103) angezeigt. Da dieser Punkt je nach Startmodell oder auch wenn ein Punkt vor starten des Journals vom Benutzer erstellt wird einen anderen Namen (zum Beispiel POINT(104) oder POINT(001)) bekommt, funktioniert folgender Code zum umbenennen nicht: Dim pointFeature1 As Features.PointFeature = CType(workPart.Features.FindObject("POINT(103)"), Features.PointFeature) pointFeature1.SetName("beispiel") Gibt es eine Möglichkeit den Punkt umzubenennen ohne diesen vorher direkt auszuwählen? Also ohne das FindObject("POINT(103)") PS: Habe es auch schon mit Dim point1 As Point point1 = workPart.Points.CreatePoint(scalar1, scalar2, scalar3, SmartObject.UpdateOption.WithinModeling) point1.SetVisibility(SmartObject.VisibilityOption.Visible) point1.SetName("Beispiel") versucht. Allerdings ohne Erfolg edit: programmiert in VB.Net ------ NX 8.5 [Diese Nachricht wurde von Kaichi am 19. Nov. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas NX Mitglied Student
Beiträge: 27 Registriert: 09.09.2013 CAD: NX 8.0.3.4 VB.Net: Visual Studio 2010 Express
|
erstellt am: 19. Nov. 2013 17:34 <-- editieren / zitieren --> Unities abgeben: Nur für Kaichi
Hallo Kaichi, versuch mal folgendes: '--------------------------------------------------------- Dim pointFeature1 As NXObject = CType(nXObject1, NXObject) pointFeature1.SetName("beispiel") '--------------------------------------------------------- Grüße, Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kaichi Mitglied
Beiträge: 26 Registriert: 07.11.2013 NX 8.5.2.3 Catia V5R19
|
erstellt am: 19. Nov. 2013 18:07 <-- editieren / zitieren --> Unities abgeben:
Danke Andreas, der Punkt wird nun umbenannt in "POINT(103)"beispiel"" Ändert also schon mal den Formelementnamen, das Problem ist dadurch aber leider noch nicht gelöst [Diese Nachricht wurde von Kaichi am 19. Nov. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kaichi Mitglied
Beiträge: 26 Registriert: 07.11.2013 NX 8.5.2.3 Catia V5R19
|
erstellt am: 20. Nov. 2013 09:04 <-- editieren / zitieren --> Unities abgeben:
Auch wenn ich den Punkt manuell umbenenne in "beispiel" und der Punkt nirgends mehr als "POINT(103)" zu sehen ist muss ich ihn im Journal als POINT(103) ansprechen wenn ich ihn weiter verwenden will Da muss es doch eine Möglichkeit geben Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hg-obdf Mitglied Konstrukteur
Beiträge: 78 Registriert: 30.07.2008 NX7.5 Visual Basic 2010 Express Eclipse
|
erstellt am: 20. Nov. 2013 09:40 <-- editieren / zitieren --> Unities abgeben: Nur für Kaichi
Hab da ein Schnippsel für dich ausgegraben-> vielleicht hilfts dir weiter. MFG ---------------------- Imports System Imports System.IO Imports System.Collections Imports System.Text Imports System.Windows.Forms Imports System.Collections.Generic Imports NXOpen Imports NXOpen.UF Imports NXOpen.Selection Imports NXOpen.Drawings Imports NXOpen.Utilities Imports NXOpen.Assemblies Imports NXOpen.Features Public Class Punkt
Inherits System.Windows.Forms.Form Dim sess As Session = Session.GetSession Dim ufs As UFSession = UFSession.GetUFSession Dim ui As UI = ui.GetUI Dim lw As ListingWindow = sess.ListingWindow Dim wp As Part = sess.Parts.Work Dim dp As Part = sess.Parts.Display Dim nObjects As Integer = 0 Dim typeCount As New Hashtable Friend WithEvents ListBox1 As System.Windows.Forms.ListBox Public Shared Sub Main() Dim punkt As New Punkt End Sub
Private Sub New() MyBase.new() Me.InitializeComponent() If check() Then Me.ShowDialog() End If End Sub Private Function check() As Boolean If wp Is Nothing Then MessageBox.Show("Sie haben noch kein Teil geöffnet!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) Return False End If
''modulabfrage 'Dim module_id As Integer = 0 'ufs.UF.AskApplicationModule(module_id) ''modulabfrage 'If module_id <> UFConstants.UF_APP_DRAFTING Then ' MessageBox.Show("Nicht in der Zeichnungsableitung!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) ' Return False 'End If Return True End Function Private Sub btn_exit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_exit.Click Me.Close()
End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Point() End Sub
Private Sub Point() For Each feat As Feature In wp.Features If TypeOf feat Is NXOpen.Features.PointFeature Then ListBox1.Items.Add("Punkt gefunden") If feat.Name Is Nothing Then feat.SetName("Beispiel") End If For Each ex As Expression In feat.GetExpressions ListBox1.Items.Add(ex.Name + "=" + ex.Value.ToString) Next End If Next End Sub Public Function GetUnloadOption(ByVal dummy As String) As Integer GetUnloadOption = NXOpen.Session.LibraryUnloadOption.Immediately End Function #Region "VS Designer Code" 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. <System.Diagnostics.DebuggerNonUserCode()> _ Protected Overrides Sub Dispose(ByVal disposing As Boolean) Try If disposing AndAlso components IsNot Nothing Then components.Dispose() End If Finally MyBase.Dispose(disposing) End Try End Sub 'Wird vom Windows Form-Designer benötigt. Private components As System.ComponentModel.IContainer Friend WithEvents btn_exit As System.Windows.Forms.Button Friend WithEvents Button3 As System.Windows.Forms.Button 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. <System.Diagnostics.DebuggerStepThrough()> _ Private Sub InitializeComponent() Me.btn_exit = New System.Windows.Forms.Button() Me.Button3 = New System.Windows.Forms.Button() Me.ListBox1 = New System.Windows.Forms.ListBox() Me.SuspendLayout() ' 'btn_exit ' Me.btn_exit.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.btn_exit.Location = New System.Drawing.Point(55, 287) Me.btn_exit.Name = "btn_exit" Me.btn_exit.Size = New System.Drawing.Size(128, 48) Me.btn_exit.TabIndex = 0 Me.btn_exit.Text = "Beenden" Me.btn_exit.UseVisualStyleBackColor = True ' 'Button3 ' Me.Button3.Location = New System.Drawing.Point(24, 27) Me.Button3.Name = "Button3" Me.Button3.Size = New System.Drawing.Size(239, 48) Me.Button3.TabIndex = 36 Me.Button3.Text = "Features anzeigen" Me.Button3.UseVisualStyleBackColor = True ' 'ListBox1 ' Me.ListBox1.FormattingEnabled = True Me.ListBox1.Location = New System.Drawing.Point(24, 81) Me.ListBox1.Name = "ListBox1" Me.ListBox1.Size = New System.Drawing.Size(239, 160) Me.ListBox1.TabIndex = 37 ' 'Punkt ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.ClientSize = New System.Drawing.Size(279, 366) Me.Controls.Add(Me.ListBox1) Me.Controls.Add(Me.Button3) Me.Controls.Add(Me.btn_exit) Me.Location = New System.Drawing.Point(50, 50) Me.Name = "Punkt" Me.Text = "Test" Me.TopMost = True Me.ResumeLayout(False)
End Sub #End Region End Class
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kaichi Mitglied
Beiträge: 26 Registriert: 07.11.2013 NX 8.5.2.3 Catia V5R19
|
erstellt am: 20. Nov. 2013 10:24 <-- editieren / zitieren --> Unities abgeben:
Auch Dir Danke hg-obdf aber leider liest dieses Programm nur die Koordinaten der Punkte aus kann diese aber nicht umbenennen. Im Notfall könnte ich bei der Weiterverwendung der Punkte einfach neue deklarieren und auf die Koordinaten in den Expressions (liegen dort ja sowieso) verweisen. dim beispiel as 3dpoint (... etc. Problematisch wird es dann aber bei Kurven (Arc) oder Flächen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hg-obdf Mitglied Konstrukteur
Beiträge: 78 Registriert: 30.07.2008 NX7.5 Visual Basic 2010 Express Eclipse
|
erstellt am: 20. Nov. 2013 10:46 <-- editieren / zitieren --> Unities abgeben: Nur für Kaichi
Sorry- ersetzt folgendes Sub- Dann sollte es funktionieren. --------------------------------- Private Sub Point() For Each feat As Feature In wp.Features If TypeOf feat Is NXOpen.Features.PointFeature Then ListBox1.Items.Add("Punkt gefunden") feat.SetName("Test") For Each ex As Expression In feat.GetExpressions ListBox1.Items.Add(ex.Name + "=" + ex.Value.ToString) Next End If Next End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kaichi Mitglied
Beiträge: 26 Registriert: 07.11.2013 NX 8.5.2.3 Catia V5R19
|
erstellt am: 20. Nov. 2013 11:02 <-- editieren / zitieren --> Unities abgeben:
|
hg-obdf Mitglied Konstrukteur
Beiträge: 78 Registriert: 30.07.2008 NX7.5 Visual Basic 2010 Express Eclipse
|
erstellt am: 20. Nov. 2013 11:24 <-- editieren / zitieren --> Unities abgeben: Nur für Kaichi
OK- letzter Versuch zum Ansprechen eines internen Punktes ?!? Über JournalIdentifier Mit diesem Punkt kannst du weiterarbeiten. x-y-z ändern, Namen ändern etc. ----------------------------------------- Private Sub Point() For Each feat As Feature In wp.Features If TypeOf feat Is NXOpen.Features.PointFeature Then ListBox1.Items.Add("Punkt gefunden") ListBox1.Items.Add(feat.JournalIdentifier) For Each ex As Expression In feat.GetExpressions ListBox1.Items.Add(ex.Name + "=" + ex.Value.ToString) Next End If Next End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kaichi Mitglied
Beiträge: 26 Registriert: 07.11.2013 NX 8.5.2.3 Catia V5R19
|
erstellt am: 20. Nov. 2013 11:58 <-- editieren / zitieren --> Unities abgeben:
Erneut Danke, allerdings benennt auch dieses Programm nichts um sondern gibt nur Koordinaten und Namen aus. Ich würde den Vorgang ja einfach aufzeichnen und so weiter kommen allerdings gelingt es mir ja nichtmal außerhalb eines Journals den Punkt richtig umzubenennen. Mit RMT -> Rename ändert sich ja auch nur der "angezeigte Name" von POINT(103) zu POINT(103)"Beispiel" soll ein Journal den Punkt auswählen muss es in beiden Fällen auf POINT(103) verweisen und das "Beispiel" ist völlig irrelevant. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas NX Mitglied Student
Beiträge: 27 Registriert: 09.09.2013 CAD: NX 8.0.3.4 VB.Net: Visual Studio 2010 Express
|
erstellt am: 20. Nov. 2013 12:35 <-- editieren / zitieren --> Unities abgeben: Nur für Kaichi
Zitat: Mit RMT -> Rename ändert sich ja auch nur der "angezeigte Name" von POINT(103) zu POINT(103)"Beispiel"...
Ich denke, wenn es sich manuell schon nicht ändern lässt, wird es schwierig werden das ganze programmtechnisch zu lösen. Aber ich mag mich irren. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-1980 3D Printer Prusa MK2 S
|
erstellt am: 20. Nov. 2013 13:07 <-- editieren / zitieren --> Unities abgeben: Nur für Kaichi
Hallo zusammen, wenn man sich klar macht, daß es sich bei einem PointFeature um zwei Objekte handelt und diese auch im Programm deutlich unterscheidet, sollte sich eine Lösung finden. Dazu interaktiv den Cursor auf den Punkt setzen und abwarten, bis das QuickPick kommt. Dann den Punkt, nicht das Feature auswählen und die Eigenschaften aufrufen. Da lassen sich jetzt zwei Namen vergeben, einer für den Punkt, der andere für's Feature. Selbst ohne Test würd' ich mal behaupten, daß sich beide über den jeweiligen Namen wieder finden. Beim Feature könnte evtl. ein anderer Timestamp dazwischenfunken. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kaichi Mitglied
Beiträge: 26 Registriert: 07.11.2013 NX 8.5.2.3 Catia V5R19
|
erstellt am: 20. Nov. 2013 13:51 <-- editieren / zitieren --> Unities abgeben:
Danke Michael, also ich hab jetzt einfach mal zwei Punkte erzeugt und man kann tatsächlich zwei Namen für einen Punkt vergeben halt einmal für den Punkt und einmal für das Feature. Ich hab den Punkt1 TEST1 und Punkt2 TEST2 genannt Ich hab das PunktFeature1 aaa und PunktFeature2 bbb genannt. Dann eine Linie zwischen beiden Punkten unter "Journal-Record" erzeugt und geschaut welche Punkte er sich sucht... ...es ist nach wie vor nur der Name POINT(103) für Punkt1 und POINT(104) für Punkt2 ansprechbar. Habe auch versucht das ganze durch TEST1/TEST2/aaa/bbb zu ersetzen, aber nichts hilft. edit: Im Strukturbaum heißen die Punkte auch immernoch POINT(103)"aaa" und POINT(104)"bbb" Es muss doch eine Möglichkeit geben folgendes Exemplarisches Beispiel zu programmieren: Eine WIndows User Form öffnet sich und fragt nach Koordinaten eines Punktes, einem Durchmesser und einer Höhe. Nach Eingabe der Daten wird automatisch ein Punkt bei diesen Koordinaten erzeugt. Eine Kreis-Kurve wird auf diesem Punkt erzeugt. Eine extrudierte Fläche wird aus dieser Kreis-Kurve erzeugt. Mein Programm tut dies alles auch aber sobald vor ausführen des Programms ein Punkt vom Benutzer erzeugt wird funktioniert es nicht mehr. Weil dann eben der vom Programm erzeugte Punkt einen anderen Namen erhält und die Kreis-Kurve nicht mehr weiß auf welchen Punkt sie sich setzen soll/sich auf den falschen Punkt setzt. [Diese Nachricht wurde von Kaichi am 20. Nov. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kaichi Mitglied
Beiträge: 26 Registriert: 07.11.2013 NX 8.5.2.3 Catia V5R19
|
erstellt am: 21. Nov. 2013 11:08 <-- editieren / zitieren --> Unities abgeben:
Um die Kreis-Kurve auf dem Punkt zu erzeugen nutze ich momentan diesen Befehl um den Punkt auszuwählen: Dim pointFeature1 As Features.PointFeature = CType(workPart.Features.FindObject("POINT(103)"), Features.PointFeature) Vielleicht gibt es ja alternative Lösungen um den Punkt zu greifen und das Problem behebt sich somit? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas NX Mitglied Student
Beiträge: 27 Registriert: 09.09.2013 CAD: NX 8.0.3.4 VB.Net: Visual Studio 2010 Express
|
erstellt am: 21. Nov. 2013 14:17 <-- editieren / zitieren --> Unities abgeben: Nur für Kaichi
Wenn du deinen Punkt über die Koordinaten erzeugst brauchst du nicht den Weg über "workPart.Features.FindObject("POINT(103)")" zu gehen. Stattdessen machst du folgendes: Code: Dim pt1(2) As Double'Koordinaten x,y,z pt1(0) = 0 'x-Koordinate pt1(1) = 0 'y-Koordinate pt1(2) = 0 'z-Koordinate Dim ArcCenter3D As Point3d = New Point3d(pt1(0), pt1(1), pt1(2)) Dim ArcCenterP As Point = workPart.Points.CreatePoint(ArcCenter3D) . . . . 'Übergabe des Punktes an die Funktion zur Erzeugung des Kreises: associativeArcBuilder1.MidPoint.Value = ArcCenterP
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kaichi Mitglied
Beiträge: 26 Registriert: 07.11.2013 NX 8.5.2.3 Catia V5R19
|
erstellt am: 21. Nov. 2013 15:33 <-- editieren / zitieren --> Unities abgeben:
Funktioniert aber nur mit double und somit nur wenn ich die Koordinaten in Zahlenform ins Journal tippe oder? Die Eingabe der Koordinaten soll ja vom Benutzer innerhalb einer Windows Form erfolgen, sich also auch je nach Eingabe ändern können. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas NX Mitglied Student
Beiträge: 27 Registriert: 09.09.2013 CAD: NX 8.0.3.4 VB.Net: Visual Studio 2010 Express
|
erstellt am: 21. Nov. 2013 15:58 <-- editieren / zitieren --> Unities abgeben: Nur für Kaichi
Du willst doch die Koordinaten (x,y,z) manuell in einer WindowsForm eingeben. Dann musst du die jeweiligen Textfelder der WindowsForm mit den entsprechenden Punkt-Variablen (x,y,z) im Quellcode verknüpfen. Oder verstehe ich deine Frage falsch? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kaichi Mitglied
Beiträge: 26 Registriert: 07.11.2013 NX 8.5.2.3 Catia V5R19
|
erstellt am: 21. Nov. 2013 16:39 <-- editieren / zitieren --> Unities abgeben:
Richtig, Habe noch nicht ausprobiert ob es funktioniert wenn ich direkt mit der Textbox der WinForm verknüpfe. Also z.B.: pt1(0)=Textbox_X_Koordinate.text aber die Daten müssten aus Tools-Expressions ausgelesen werden da diese noch für spätere Berechnungen notwendig sind bzw. auch die Punkte auf berechnete Koordinaten gelegt werden. ich müsste also pt1(0)=P1_x_koordinate machen, wobei P1_x_koordinate ein Ausdruck ist der zum Beispiel aus zwei anderen Ausdrücken berechnet wird. Und wenn ich das so mache gibt es nur Fehlermeldungen weil es kein double ist. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kaichi Mitglied
Beiträge: 26 Registriert: 07.11.2013 NX 8.5.2.3 Catia V5R19
|
erstellt am: 22. Nov. 2013 08:36 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von Andreas NX:
Code:
'Übergabe des Punktes an die Funktion zur Erzeugung des Kreises: associativeArcBuilder1.MidPoint.Value = ArcCenterP
Das war der entscheidende Hinweis, die Punkteerstellung konnte bleiben wie sie ist. NX hatte bei der Aufzeichnung einen point5 erzeugt und diesen mit POINT(103) verknüpft. Mit einem direkten Verweis von associativeArcBuilder1.MidPoint.Value = MeinPunkt funktioniert es nun wunderbar .... auch an anderen Workstations Ich danke Dir vielmals für deine Hilfe Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kaichi Mitglied
Beiträge: 26 Registriert: 07.11.2013 NX 8.5.2.3 Catia V5R19
|
erstellt am: 27. Nov. 2013 16:22 <-- editieren / zitieren --> Unities abgeben:
Die Kruven-Erstellung mit Punkten funktioniert wie gesagt nun. Doch nun sollen aus diesen Kurven, Flächen extrudiert werden. Und hier besteht das gleiche Problem. Hier mal der Programmteil: 'Dieser Teil wählt zwei Punkte aus (point_plain_front / point_plain_rear) und erzeugt eine Linie zwischen diesen beiden.
Dim nullFeatures_AssociativeLine As Features.AssociativeLine = Nothing Dim associativeLineBuilder1 As Features.AssociativeLineBuilder associativeLineBuilder1 = workPart.BaseFeatures.CreateAssociativeLineBuilder(nullFeatures_AssociativeLine) associativeLineBuilder1.StartPointOptions = Features.AssociativeLineBuilder.StartOption.Point associativeLineBuilder1.EndPointOptions = Features.AssociativeLineBuilder.EndOption.Point associativeLineBuilder1.Limits.StartLimit.LimitOption = GeometricUtilities.CurveExtendData.LimitOptions.AtPoint associativeLineBuilder1.Limits.EndLimit.LimitOption = GeometricUtilities.CurveExtendData.LimitOptions.AtPoint Dim nullXform_plane_curve As Xform = Nothing Dim point_plane_curve_1 As Point point_plane_curve_1 = workPart.Points.CreatePoint(point_plain_front, nullXform_plane_curve, SmartObject.UpdateOption.WithinModeling) associativeLineBuilder1.StartPoint.Value = point_plane_curve_1 associativeLineBuilder1.StartPointOptions = Features.AssociativeLineBuilder.StartOption.Point Dim point_plane_curve_2 As Point point_plane_curve_2 = workPart.Points.CreatePoint(point_plane_rear, nullXform_plane_curve, SmartObject.UpdateOption.WithinModeling) associativeLineBuilder1.EndPoint.Value = point_plane_curve_2 associativeLineBuilder1.EndPointOptions = Features.AssociativeLineBuilder.EndOption.Point Dim nXObject3 As NXObject nXObject3 = associativeLineBuilder1.Commit() Dim Name_curve_plane as string = "CURVE_2D_PLANE" nxObject3.SetName(Name_curve_plane) associativeLineBuilder1.Destroy() ' Dieser Teil erstellt eine extrudierte Fläche aus dieser oben erstellten Kurve. Start und Ende ist jeweils (+/-) die Hälfte des Ausdrucks "Width" Dim nullFeatures_Feature2 As Features.Feature = Nothing Dim extrudeBuilder2 As Features.ExtrudeBuilder extrudeBuilder2 = workPart.Features.CreateExtrudeBuilder(nullFeatures_Feature2) Dim section2 As Section section2 = workPart.Sections.CreateSection(0.02413, 0.0254, 0.5) extrudeBuilder2.Section = section2 extrudeBuilder2.AllowSelfIntersectingSection(True) extrudeBuilder2.DistanceTolerance = 0.0254 extrudeBuilder2.BooleanOperation.Type = GeometricUtilities.BooleanOperation.BooleanType.Create extrudeBuilder2.BooleanOperation.Type = GeometricUtilities.BooleanOperation.BooleanType.Create Dim smartVolumeProfileBuilder2 As GeometricUtilities.SmartVolumeProfileBuilder smartVolumeProfileBuilder2 = extrudeBuilder2.SmartVolumeProfile smartVolumeProfileBuilder2.OpenProfileSmartVolumeOption = False smartVolumeProfileBuilder2.CloseProfileRule = GeometricUtilities.SmartVolumeProfileBuilder.CloseProfileRuleType.Fci section2.DistanceTolerance = 0.0254 section2.ChainingTolerance = 0.02413 section2.SetAllowedEntityTypes(Section.AllowTypes.OnlyCurves) Dim features2(0) As Features.Feature Dim associativeLine1 As Features.AssociativeLine = CType(workPart.Features.FindObject("LINE(105)"), Features.AssociativeLine) features2(0) = associativeLine1 Dim curveFeatureRule3 As CurveFeatureRule curveFeatureRule3 = workPart.ScRuleFactory.CreateRuleCurveFeature(features2) section2.AllowSelfIntersection(True) Dim rules3(0) As SelectionIntentRule rules3(0) = curveFeatureRule3 Dim line1 As Line = CType(associativeLine1.FindObject("CURVE 1"), Line) Dim nullNXObject As NXObject = Nothing Dim helpPoint3 As Point3d = New Point3d(272.641823553503, -1.4210854715202e-014, -200.0) section2.AddToSection(rules3, line1, nullNXObject, nullNXObject, helpPoint3, Section.Mode.Create, False) Dim unit3 As Unit unit3 = extrudeBuilder2.Offset.StartOffset.Units Dim origin12 As Point3d = New Point3d(0.0, 0.0, 0.0) Dim vector12 As Vector3d = New Vector3d(0.0, 1.0, 0.0) Dim direction12 As Direction direction12 = workPart.Directions.CreateDirection(origin12, vector12, SmartObject.UpdateOption.WithinModeling) extrudeBuilder2.Direction = direction12 workPart.Expressions.EditWithUnits(extrudeBuilder2.Limits.StartExtend.Value, unit3, "-width/2") extrudeBuilder2.Limits.StartExtend.Value.RightHandSide = "-width/2" workPart.Expressions.EditWithUnits(extrudeBuilder2.Limits.EndExtend.Value, unit3, "width/2") extrudeBuilder2.Limits.EndExtend.Value.RightHandSide = "width/2" extrudeBuilder2.FeatureOptions.BodyType = GeometricUtilities.FeatureOptions.BodyStyle.Sheet extrudeBuilder2.ParentFeatureInternal = False Dim feature2 As Features.Feature feature2 = extrudeBuilder2.CommitFeature() Dim Name_plane_surface as string = "PLANE" feature2.SetName(Name_plane_surface) extrudeBuilder2.Destroy() Soweit funktioniert das Programm. Sobald ich aber Line(105) gegen CURVE_2D_PLANE ersetze, funktioniert es nicht mehr. Anscheinend heißt die Kurve also noch nicht richtig CURVE_2D_PLANE?
Wie kann ich der Kurve den Namen richtig zuweisen und bei der Flächenerzeugung darauf zugreifen? Schonmal Danke im voraus. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wladlaw Mitglied Ingenieur
Beiträge: 72 Registriert: 11.01.2012
|
erstellt am: 28. Nov. 2013 00:05 <-- editieren / zitieren --> Unities abgeben: Nur für Kaichi
Hallo Kaichi, Du könntest direkt die erzeugte Objekte benutzen und deren Eigenschaften. Man muss aber Objekt-Typ beachten und richtige Cast-Operation an der richtige Stelle einsetzen. Journal-Name ist vom System und passt zu diesem Zweck nicht so richtig. Objekt-Benennung, wenn es um einen Journal geht, ist nicht notwendig. Schau mal den beigefügten und angepassten Code-Ausschnitt. Den Code habe ich nicht getestet... ------------------ Gruß Wladimir Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Technischer Zeichner (m/w/d) für die Halbleiterindustrie | Innovative Produkte für namhafte Kunden in einem zukunftsorientierten, internationalen Markt ? das ist SÜSS MicroTec. Die SÜSS-Gruppe mit Hauptsitz in Garching bei München entwickelt und fertigt Prozesslösungen für die Mikrostrukturanwendungen in der Halbleiterindustrie und verwandten Märkten ? ein Bereich, in dem SÜSS MicroTec über 75 Jahre Erfahrung verfügt. Unser Portfolio umfasst ein breites ... | Anzeige ansehen | Technischer Zeichner, Bauzeichner |
|
Kaichi Mitglied
Beiträge: 26 Registriert: 07.11.2013 NX 8.5.2.3 Catia V5R19
|
erstellt am: 28. Nov. 2013 08:50 <-- editieren / zitieren --> Unities abgeben:
|