Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Kantenverrundung Feature löschen

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:  Kantenverrundung Feature löschen (2082 mal gelesen)
bernd0209
Mitglied
CNC-Fräser / Programmierer


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

Beiträge: 32
Registriert: 07.01.2014

Win10 64bit, NX1892 mit TC12

erstellt am: 05. Jan. 2016 14:14    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,

kleines Aufgabe für Profis, denke ich.
Ich möchte in einem Teil alle Kantenverrundungen löschen, die kleiner sind als ein bestimmter Wert.

Ich hab schon etwas gefunden, das mir entsprechende Verrundungen auflistet, nur wie kann ich diese dann aus meinem Modell entfernen?


       
        For Each myFeature As Features.Feature In workPart.Features
            If myFeature.FeatureType = "BLEND" Then

            'Verrunden löschen wenn kleiner als ....
            '????
          End If

Das komplette Script hatte ich von hier:
http://www.nxjournaling.com/content/find-object

Schaffe es aber nicht, hier das löschen einzubauen.
Wäre nett wenn mir da jemand helfen könnte.

Viele Grüße
Bernd

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: 05. Jan. 2016 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 Nur für bernd0209 10 Unities + Antwort hilfreich

Hallo Bernd,

sind das alles "normale" Blends mit konstantem Radius ? Oder gibt's auch Bodies ohne Parameter oder variable Radien ? Dann wird's halt mehr oder weniger umfangreich.

Im einfachen Fall würd' ich erst mal alle Blends in einer Schleife aufsammeln. In einer nächsten Schleife deren Radius ermitteln. Wenn man die Erzeugung oder Änderung eines Blends aufzeichnet, findet sich darin der gesuchte Wert. So lassen sich wiederum die Blends sammeln resp. aussortieren, deren Radius zu klein, zu groß oder was auch immer ist.

Jetzt können die gefundenen Features gelöscht werden, bevorzugt vom Ende her. Sonst klaut man einem nachfolgenden Blend evtl. seine Parents.

Gruß, Michael

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

bernd0209
Mitglied
CNC-Fräser / Programmierer


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

Beiträge: 32
Registriert: 07.01.2014

erstellt am: 06. Jan. 2016 06:38    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 Michael,

es geht darum, Radien am Teil zu entfernen, die bei einer späteren Vernetzung stören.
Für den Anfang würde ich sagen, es wären alles einfache Blends mit konstantem Radius.

Das ganze einsammeln, Radius ermitteln und in eine Liste schreiben klappt ja grundsätzlich.

For Each myFeature As Features.Feature In workPart.Features
  If myFeature.FeatureType = "BLEND" Then
  ...
  ...
  ...
Dann müsste aber irgendetwas wie z.B. myfeature.delete kommen.
Aber irgendwie hänge ich mich dabei auf 

Vielleicht kannst Du mir noch einen kleinen Anstoss geben?

Und mal am Rande noch eine Frage.
Was kosten solche "kleinen" Helfer, wenn man sich soetwas professionell programmieren lässt?
Genau kann man das nicht sagen, schon klar. Aber wo ist der Bereich in dem man sich da bewegen würde?

Viele Grüße
Bernd

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: 06. Jan. 2016 12: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 Nur für bernd0209 10 Unities + Antwort hilfreich

Hallo Bernd,

auch das kriegt man mit einer Journal-Aufzeichnung oder einer Suche in der .NET-Ref raus  .

Wenn's nur um's Löschen geht:

UFSession.GetUFSession.Obj.deleteobject()

oder Session.Getsession.Updatemanager.Add2DeleteList() mit anschliessendem DoUpdate().

Gruß, Michael

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

bernd0209
Mitglied
CNC-Fräser / Programmierer


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

Beiträge: 32
Registriert: 07.01.2014

erstellt am: 06. Jan. 2016 13: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

.....
den Anfang hätte ich und für den Fall das noch jemand Interesse hat:


Code:
Option Strict Off
Imports System
Imports NXOpen
Imports NXOpenUI
' script löscht alle Kantenverrundungen im Teil
' Grenzradius kann per InputBox eingegeben werden
Module Module1

    Sub Main()

        Dim theSession As Session = Session.GetSession()
Dim theUISession As UI = UI.GetUI
        If IsNothing(theSession.Parts.Work) Then
            'active part required
            Return
        End If
'input box: prompt and title
Dim answer As String = ""
Dim loeschradius as Double
answer = NXInputBox.GetInputString("alle kleiner als:", "zu löschende Kantenverrundungen")
if answer = "" then exit sub
answer=answer.replace(".",",")
loeschradius = Convert.ToDouble(answer)


        Dim workPart As Part = theSession.Parts.Work
        Dim lw As ListingWindow = theSession.ListingWindow
        lw.Open()
lw.WriteLine(answer)
Dim markId2 As Session.UndoMarkId
markId2 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Delete")
Dim objects1(50) As NXObject
dim zaehler as integer =0
dim result as string
dim radius as double
        For Each myFeature As Features.Feature In workPart.Features

            If TypeOf (myFeature) Is NXOpen.Features.EdgeBlend Then
                lw.WriteLine(myFeature.GetFeatureName)
                Dim blendFeature As Features.EdgeBlend = myFeature
                Dim edgeBuilder As Features.EdgeBlendBuilder
                edgeBuilder = workPart.Features.CreateEdgeBlendBuilder(myFeature)
                Dim numChainSets As Integer
                numChainSets = edgeBuilder.GetNumberOfValidChainsets
                'lw.WriteLine("number of chain sets: " & numChainSets.ToString)

                For i As Integer = 0 To numChainSets - 1
                    Dim myCollector As ScCollector
                    Dim radiusExpression As Expression
                    Dim isValid As Boolean
                    edgeBuilder.GetChainsetAndStatus(i, myCollector, radiusExpression, isValid)
                    'lw.WriteLine("chainset " & i.ToString & ":")
                    'lw.WriteLine("  isValid: " & isValid.ToString)
                    lw.WriteLine("  Radius: " & radiusExpression.RightHandSide)
' ### wenn z.B. 0.4 aber in Zelle steht nur .4
result="0" & radiusExpression.RightHandSide
result=result.replace(".",",")
radius = Convert.ToDouble(result)
'#### bis hier
'if radiusExpression.RightHandSide <0.5 then
if radius < loeschradius then
lw.WriteLine("  Radius kleiner als " & loeschradius & "  -- wird gelöscht")
objects1(zaehler) = myFeature
zaehler +=1
end if
                Next

            End If

        Next

'löschen der Features
Dim nErrs1 As Integer
nErrs1 = theSession.UpdateManager.AddToDeleteList(objects1)
'gezieltes löschen -> objects1(...)
'nErrs1 = theSession.UpdateManager.AddToDeleteList(objects1(1))
Dim notifyOnDelete2 As Boolean
notifyOnDelete2 = theSession.Preferences.Modeling.NotifyOnDelete
Dim nErrs2 As Integer
nErrs2 = theSession.UpdateManager.DoUpdate(markId2)

        lw.Close()

    End Sub

End Module



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: 06. Jan. 2016 15:31    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 bernd0209 10 Unities + Antwort hilfreich

Hallo Bernd,

noch 2 Gedanken zum Thema:

    Features unterdrücken statt löschen wäre eine ungefährlichere Alternative, geht evtl. auch per Expression.

    Synchronous Modeling bietet auch ein paar Funktionen zur Vereinfachung von Modellen.

Gruß, Michael

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



Elektrokonstrukteur im Bereich Entwicklung und Konstruktion von Kabelbäumen (m/w/d)

Unser Mandant hat eine langjährige Erfahrung im Bereich der Kabelkonfektionierung und dem Einsatz modernster Fertigungstechnologien zur Sicherung der hohen Ansprüche an Service und Produktqualität. Vom kompletten Kabelbaum bis zur fertig konfektionierten und bedruckten Litze wird das komplette Spektrum angeboten. Als Serienfertigung, exakt auf die Taktzeiten der Produktionsabläufe beim Kunden abgestimmt bis hin zur Kleinserie oder Prototyp in Einzelfertigung....

Anzeige ansehenElektrotechnik, Elektronik
bernd0209
Mitglied
CNC-Fräser / Programmierer


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

Beiträge: 32
Registriert: 07.01.2014

erstellt am: 07. Jan. 2016 06:27    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 Michael,

die 2 Gedanken sind Grundsätzlich besser, schon klar.
Es ging ja am Ende aber um den Versuch eine schnelle "automatische" Lösung zu haben.

Mit der synchronen Konstruktion machen sie es ja momentan auch.
Unterdrücken ... das müsste dann konstruktiv schon so angelegt sein. Eher schwierig.
Zumal es z.T. auch schon Teile sind, die schon einige Jahre alt sind.

Viele Grüße
Bernd

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