Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Wie kann ich den Durchmesser einer Kanten und Kurven bekommen?

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:  Wie kann ich den Durchmesser einer Kanten und Kurven bekommen? (2085 mal gelesen)
NXDJ
Mitglied
Konstrukteur


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

Beiträge: 15
Registriert: 19.01.2009

erstellt am: 19. Jan. 2009 19:07    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 Liebe NX VB.NET Gemeinde,

habe folgendes Problem selektiere eine Kante oder Kurve über eine Funktion und bekomme ein NXObject zurück.
Von diesem NXObject benötige ich den Durchmesser wie könnte ich diesen herausbekommen?


Code:

Public Function Select_Hole() As NXObject

Dim ui As UI = GetUI()
Dim message As String = "Bohrung wählen!"
Dim title As String = "Bohrung wählen!"

Dim scope As Selection.SelectionScope = Selection.SelectionScope.AnyInAssembly
Dim keepHighlighted As Boolean = True
Dim includeFeatures As Boolean = True

Dim selectionAction As Selection.SelectionAction = Selection.SelectionAction.ClearAndEnableSpecific

Dim selectionMask_array(1) As Selection.MaskTriple
With selectionMask_array(0)
            .Type = UFConstants.UF_solid_type
            .Subtype = UFConstants.UF_solid_edge_subtype
            .SolidBodySubtype = UFConstants.UF_solid_edge_subtype
End With
With selectionMask_array(1)
            .Type = UFConstants.UF_circle_type
            '.Subtype = UFConstants.UF_all_subtype
End With


Dim selectedObject As NXObject = Nothing

Dim cursor As Point3d

ui.SelectionManager.SelectObject(message, title, scope, _
                                        selectionAction, includeFeatures, _
                                        keepHighlighted, selectionMask_array, _
                                        selectedObject, cursor)

Dim Hole_Tag As NXObject = CType(selectedObject, NXObject)

Return Hole_Object

End Function


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: 20. Jan. 2009 09:55    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 NXDJ 10 Unities + Antwort hilfreich

Hallo NXDJ,

von einem allgemeinen NXObject wirst Du keine typspezifischen Infos, wie z.B. Durchmesser abfragen können. Dazu muß es zunächst in den entprechenden Typ gewandelt werden, also einen Arc. Der Arc hat das Property Radius, das Du dann verwenden kannst.
Das könnte in etwa so aussehen:

dim my_arc as arc = ctype(nxobj, arc)
dim rad as double = my_arc.radius

Gruß, Michael

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

Overcast
Mitglied



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

Beiträge: 111
Registriert: 21.12.2005

.

erstellt am: 20. Jan. 2009 14:09    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 NXDJ 10 Unities + Antwort hilfreich

1: "Hole_Object" ist nicht bekannt und ausserdem ist "selectedObject" bereits vom Typ "NXObject".
2: das 1. Mask Triple sieht auch merkwürdig aus.
3: Eine Edge kann man nicht in einen Arc casten und führt zu einer Exception.

Es gibt einen Beispielcode report_circular_edge_info, das den UF_EVAL Wrapper nutzt.
Alles zusammengefasst würde dann ungefähr so aussehen:

Code:

Option Strict Off
Imports System
Imports NXOpen
Imports NXOpen.UI
Imports NXOpen.UF

Module report_radius_of_circle_or_circular_edge
Sub Main

Dim theSession As Session = Session.GetSession()
Dim theUI As UI = UI.GetUI()
Dim lw As ListingWindow = theSession.ListingWindow()
Dim obj As NXObject

While select_a_circular_object(obj) = Selection.Response.Ok
    Dim rad as double
    If obj.GetType().ToString() = "NXOpen.Arc" Then
        Dim my_arc as arc = ctype(obj, arc)
        rad = my_arc.radius
    Else
        rad = get_edge_radius(obj.Tag)
    End If
    lw.Open()
    lw.WriteLine("Radius: " + rad.ToString())
End While

End Sub

Function select_a_circular_object(ByRef obj As NXObject)

    Dim ui As UI = ui.GetUI()
    Dim message As String = "Select a circular object"
    Dim title As String = "Selection"
    Dim selectionMask(1) As Selection.MaskTriple
        With selectionMask(0)
            .Type = UFConstants.UF_solid_type
            .Subtype = UFConstants.UF_solid_edge_subtype
            .SolidBodySubtype = UFConstants.UF_UI_SEL_FEATURE_CIRCULAR_EDGE
        End With
        With selectionMask(1)
            .Type = UFConstants.UF_circle_type
            .Subtype = 0
            .SolidBodySubtype = 0
        End With
    Dim cursor As Point3d = Nothing

    Dim resp As Selection.Response = _
        ui.SelectionManager.SelectObject(message, title, _
            Selection.SelectionScope.WorkPart, _
            Selection.SelectionAction.ClearAndEnableSpecific, _
            False, False, selectionMask, obj, cursor)

    If resp = Selection.Response.ObjectSelected Or _
      resp = Selection.Response.ObjectSelectedByName Then
        return Selection.Response.Ok
    Else
        return Selection.Response.Cancel
    End If

End Function

Function get_edge_radius(ByVal edge_tag As Tag) As double
    Dim theUFSession As UFSession = UFSession.GetUFSession()
    Dim arc_evaluator As System.IntPtr
    Dim arc_data As NXOpen.UF.UFEval.Arc

    theUFSession.Eval.Initialize(edge_tag, arc_evaluator)
    theUFSession.Eval.AskArc(arc_evaluator, arc_data)
    theUFSession.UF.Free(arc_evaluator)

    Return arc_data.radius
End Function

End Module



[Diese Nachricht wurde von Overcast am 20. Jan. 2009 editiert.]

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



Elektroniker mit Meister/ Techniker für den Bereich Sekundärkonstruktion (m/w/d)
TenneT ist ein führender europäischer Netzbetreiber, der sich für eine sichere und zuverlässige Stromversorgung einsetzt - 24 Stunden am Tag, 365 Tage im Jahr. Wir gestalten die Energiewende für eine nachhaltige Energiezukunft. Als erster grenzüberschreitender übertragungsnetzbetreiber planen, bauen und betreiben wir ein fast 25.000 Kilometer langes Hoch- und Höchstspannungsnetz in den Niederlanden ...
Anzeige ansehenElektrotechnik, Elektronik
NXDJ
Mitglied
Konstrukteur


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

Beiträge: 15
Registriert: 19.01.2009

erstellt am: 20. Jan. 2009 17: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 Nur für NXDJ 10 Unities + Antwort hilfreich

Danke für die schnellen Antworten haben mir sehr weitergeholfen!!! 

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