Community
PowerMill, PowerShape, PowerInspect & FeatureCAM – Deutsch
Das Forum für alle Fragen rund um PowerMill, PowerShape, PowerInspect & FeatureCAM. Der Ort zum Fragen stellen, Antworten erhalten und Wissen teilen.
abbrechen
Suchergebnisse werden angezeigt für 
Anzeigen  nur  | Stattdessen suchen nach 
Meintest du: 

Makro Simulation

10 ANTWORTEN 10
Antworten
Nachricht 1 von 11
Anonymous
2127 Aufrufe, 10 Antworten

Makro Simulation

Hi zusammen,

 

ich habe ein kleines Makro, welches nach jedem simulierten Fräsweg aufgerufen werden soll.

Gibt es eine Möglichkeit das zu automatisieren?

 

Hintergrund ist, die Maschine nach jedem simulierten Fräsweg auf eine Home Position zu fahren. Es soll sozusagen die Bewegung unseres PP damit simuliert werden.

Tags (1)
Beschriftungen (1)
10 ANTWORTEN 10
Nachricht 2 von 11
gosmann.andreas
als Antwort auf: Anonymous

Wie wäre es wenn du die Simulation auch per Makro durchführst dann wäre alles in ein Makro und hast die Lösung.

Eine andere Lösung fällt mir so nicht ein.

Nachricht 3 von 11
Christian.Kriegl
als Antwort auf: Anonymous

Hallo,

ich hab mir so etwas ähnliches selber geschrieben.

 

Jeder markierte WZ Weg wird simuliert. Falls noch Interesse hast..-.

Nachricht 4 von 11
karsten.sofsky
als Antwort auf: Christian.Kriegl

Könntest du das Makro mal hier reinstellen?

 

Mich interressieren einzelne Befehle, z.B. das nur markierte Fräswege gepüft werden.

 

Oder das nur der aktive Fräsweg geprüft wird.

 

Danke  :zwinkerndes_Gesicht:

Nachricht 5 von 11
gosmann.andreas
als Antwort auf: karsten.sofsky

 

suchst nur nach diesen Befehl?

ENTITY LIST tps = INPUT ENTITY MULTIPLE TOOLPATH "Wähle"

Nachricht 6 von 11
karsten.sofsky
als Antwort auf: gosmann.andreas

Was danach kommt wäre auch interessant...
Nachricht 7 von 11
Christian.Kriegl
als Antwort auf: Anonymous

Hallo Miteinander,

 

sorry für die späte Rückmeldung. War zwischendurch auf Urlaub...

 

Ich hab das so gelöst:

 

///Simulation mit Kollisionskontrolle und Restmaterial
///Alle markierten werden Simuliert

EDIT PAR 'SimulationState.Issues.Collisions.CheckToolAndHolder' 1
EDIT PAR 'SimulationState.Issues.Collisions.CheckCollisions' 1
EDIT PAR 'SimulationState.Issues.Collisions.Clearance' "15"
EDIT PAR 'SimulationState.Issues.Collisions.HolderClearance' "0,5"
EDIT PAR 'SimulationState.Issues.Collisions.ShankClearance' "0,05"
EDIT PAR 'Powermill.Simulation.Issues.PlaybackSetting' 'never'

SIMULATE VIEWMILL START


FOREACH ent IN explorer_selected_entities() {

ACTIVATE TOOLPATH $ent.Name
EDIT TOOLPATH ; APPLY_SIM_OVS YES
SIMULATE TOOLPATH $ent.name
SIMULATE END
}
FORM MACHINEISSUES

Nachricht 8 von 11
Christian.Kriegl
als Antwort auf: Anonymous

oder mit Maschine:

 

///Simulation mit Kollisionskontrolle und Restmaterial
///Alle markierten werden Simuliert

EDIT PAR 'SimulationState.Issues.Collisions.CheckToolAndHolder' 1
EDIT PAR 'SimulationState.Issues.Collisions.CheckCollisions' 1
EDIT PAR 'SimulationState.Issues.Collisions.Clearance' "15"
EDIT PAR 'SimulationState.Issues.Collisions.HolderClearance' "0,5"
EDIT PAR 'SimulationState.Issues.Collisions.ShankClearance' "0,05"
EDIT PAR 'Powermill.Simulation.Issues.PlaybackSetting' 'never'
ACTIVATE MachineTool "DMG_DMU_50_3rd Generation_5ax_V1"
SIMULATE VIEWMILL START


FOREACH ent IN explorer_selected_entities() {

ACTIVATE TOOLPATH $ent.Name
EDIT TOOLPATH ; APPLY_SIM_OVS YES
SIMULATE TOOLPATH $ent.name
SIMULATE END
}
FORM MACHINEISSUES

Nachricht 9 von 11
karsten.sofsky
als Antwort auf: Christian.Kriegl

 

Funktioniert......... Danke

 

 

Wie müsste es aussehen wenn ich mit Andreas Befehl arbeiten will?

 

"ENTITY LIST tps = INPUT ENTITY MULTIPLE TOOLPATH "Wähle""

 

 

Gibt es eigentlich Listen oder Tabellen mit diesen Befehlen? Ausser in der PM Hilfe.

Nachricht 10 von 11
gosmann.andreas
als Antwort auf: karsten.sofsky

das hab ich noch in meinen Unterlagen gefunden.

dort werden alle Werkzeugwege durchgetestet. Kannst aber mit z.b. den Befehl den oben schon geschrieben habe abändern.

// Püfung auf Modellbeschädigungen und Kollisionen für ALLE Fräswege
// Definiere als erstes die Parameter für Modellbeschädigungen und Kollisionen. Hier wurde 1mm für den 
// Halter-Sicherheitsabstand und NULL für den Schaft-Sicherheitsbereich eingestellt. Bitte jegliche Parameter nach Bedarf ändern!

// Erstelle eine boolsche Fehlervariable um den Error-Status für die Eingebengültigkeit zu speichern
BOOL $err = 0

// Erstelle eine REAL Variable um die Anwendereingabe zu speichern
REAL $Holder_Clearance = 0

// Starte eine DO-WHILE schleife. Der Anwender muß eine Zahl grösser Null eingeben
DO {
    // Abfrage an den Anwender nach dem Halter-Sicherheitsabstand
    $Holder_Clearance = INPUT "Bitte den Halter-Sicherheitsabstand eingeben"
    
    // Prüfung auf gültigkeit der REAL Zahl. Wenn falsch, dann TRUE heißt - es ist ein Fehler da.
    $err = ERROR $Holder_Clearance
    
    // Wenn ein Error vorliegt oder die Zahl kleiner oder gleich Null ist, dann geht immerwieder ein Fehlerfenster auf.
	// Es wird auf die richtige Eingabe hingewiesen.
    IF $err {
        MESSAGE ERROR "Es muß ein numerischer Wert sein. Versuche es noch mal"
    } ELSEIF ($Holder_Clearance <= 0) {
        MESSAGE ERROR "Der Wert muß grösser Null sein. Versuche es noch mal."
    }
} WHILE ($err or $Holder_Clearance <= 0)


// Abfrage an den Anwender nach dem Schaft-Sicherheitsbereich
REAL $Shank_Clearance = 0

DO {
    // Abfrage an den Anwender nach dem Schaft-Sicherheitsbereich
    $Shank_Clearance = INPUT "Bitte den Schaft-Sicherheitsbereich eingeben"
    
    // Prüfung auf gültigkeit der REAL Zahl. Wenn falsch, dann TRUE heißt - es ist ein Fehler da.
    $err = ERROR $Shank_Clearance
    
    // Wenn ein Error vorliegt oder die Zahl kleiner Null ist, dann geht immerwieder ein Fehlerfenster auf.
	// Es wird auf die richtige Eingabe hingewiesen.
    IF $err {
        MESSAGE ERROR "Es muß ein numerischer Wert sein. Versuche es noch mal"
    } ELSEIF ($Shank_Clearance < 0) {
        MESSAGE ERROR "Der Wert muß grösser oder gleich Null sein. Versuche es noch mal"
    }
} WHILE ($err or $Shank_Clearance < 0)


// Alle Parameter sind jetzt definiert. Alle Fräswege können jetzt durch eine Schleife kollisionsgeprüft werden!

FOREACH $tp IN FOLDER('toolpath') {

    // Prüfe den Fräsweg nur dann, wenn er berechnet ist!
    // Überspringe den Fräsweg, wenn er null Fräsbahnen enthält.
    // Die CONTINUE Mitteilung zwingt die Schleife sofort den nächsten Fräsweg zu prüfen.
    IF (NOT $tp.computed) OR (SEGMENTS('toolpath',$tp.name) == 0) {
        CONTINUE
    }
    
    ACTIVATE TOOLPATH $tp.name
    
    // Prüfen = Kollisionen ( stellt sicher, dass Schaft/Halter auf Kollisionen geprüft werden )
    EDIT COLLISION TYPE COLLISION

    // Prüfen gegen = Modelle
    EDIT COLLISION STOCKMODEL_CHECK N

    // Fräsweg aufteilen = AUS
    EDIT COLLISION SPLIT_TOOLPATH N

    // Überprüfungsaufmaß = AUS
    EDIT PAR 'Verification.UseVerificationThickness' 0

    // Optionen zu Kollisionen... Werkzeug ersetzen = Keins
    EDIT COLLISION USE_TOOL " "
    
    // Werkzeug einrichten = AUS
    EDIT COLLISION ADJUST_TOOL N
    
    // Definiere eine boolsche Variable um den Schaft/Halter Kollisionssicherheitsstatus zu setzen.
    BOOL $HolderTick = TRUE
    // Definiere eine boolsche Variable um den Sicherheitsstatus des Fräswegwerkzeugs für Modelbeschädigungen zu setzen.
    BOOL $GougeTick = TRUE

	
	// ab hier
	
	
    // Wenn einer der folgenden Parameter auf "unknown" also unbekannt steht, 
	// dann kann der Fräsweg den Status "Sicher" nicht bekommen
	// Oder, wenn sich Schaft/Halter Sicherheitsabstände geändert haben, 
	// dann muß der Halter erneut geprüft werden! 

    IF $entity('toolpath',$tp.name).Safety.Holder.Links.Status == "unknown" {
        $HolderTick = FALSE
    } ELSEIF $entity('toolpath',$tp.name).Safety.Holder.Leads.Status == "unknown" {
        $HolderTick = FALSE
    } ELSEIF $entity('toolpath',$tp.name).Safety.Holder.Cutting.Status == "unknown" {
        $HolderTick = FALSE
    }
    
    IF $entity('toolpath',$tp.name).Safety.Tool.Links.Status == "unknown" {
        $GougeTick = FALSE
    } ELSEIF $entity('toolpath',$tp.name).Safety.Tool.Leads.Status == "unknown" {
        $GougeTick = FALSE
    } ELSEIF $entity('toolpath',$tp.name).Safety.Tool.Cutting.Status == "unknown" {
        $GougeTick = FALSE
    }
    
    // Möglich, dass jetzt ein Halterhäkchen da ist, doch wenn der Anwender Halter oder Schaft Abstände geändert hat,
	// dann muß eine erneute Prüfung gegen Schaft und Halter durchgeführt werden!
    
    IF $Holder_Clearance != $tp.verification.clearance.holder {
        $HolderTick = FALSE
    } ELSEIF $Shank_Clearance != $tp.verification.clearance.shank {
        $HolderTick = FALSE
    }
    
	// Jetzt ist bekannt dass Kollisionen 'unbekannt' und/oder Modellbeschädigungen 'unbekannt' sind
	// Führe die Halterprüfung durch, wenn 'unbekannt':
    IF NOT($HolderTick) {
        // Schalte preventiv Fehler- und Warnmeldungen aus, die den Makrolauf pausieren. Am Ende werden diese wieder aktiviert.
        DIALOGS MESSAGE OFF
        // Definiere die Werte für Modellbeschädigungen und Kollisionen.
        EDIT COLLISION TYPE COLLISION
        EDIT COLLISION HOLDER_CLEARANCE $Holder_Clearance
        EDIT COLLISION SHANK_CLEARANCE $Shank_Clearance 
        // Alle Kollisionsprüfparameter sind jetzt gesetzt... Führe jetzt die Prüfung durch!           
        EDIT COLLISION APPLY
        // Schalte Fehler- und Warnmeldungen wieder ein
        DIALOGS MESSAGE ON
    }

    // Führe die Prüfung auf Modellbeschädigungen durch, wenn diese nicht schon auf 'sicher' steht
    IF NOT($GougeTick) {
        // Schalte preventiv Fehler- und Warnmeldungen aus, die den Makrolauf pausieren. Am Ende werden diese wieder aktiviert.
        DIALOGS MESSAGE OFF
        // Einstellung = Prüfe auf Modellbeschädigungen 
        EDIT COLLISION TYPE GOUGE
        // Führe die Prüfung durch!          
        EDIT COLLISION APPLY
        // Schalte Fehler- und Warnmeldungen wieder ein
        DIALOGS MESSAGE ON
    }
}
	
Nachricht 11 von 11
karsten.sofsky
als Antwort auf: Anonymous

Funktioniert....wobei ich für alle Fräswege prüfen auch schon ein Makro hatte.

Sicherheitsabstände muß ich bei meinem Makro vorher eingeben.

Sie finden nicht, was Sie suchen? Fragen Sie die Community oder teilen Sie Ihr Wissen mit anderen.

In Foren veröffentlichen  

Autodesk Design & Make Report