Jump to content

All Activity

This stream auto-updates

  1. Past hour
  2. ---

    Position of a Plane at an Angle

    I didn't make the drawing; I need to inspect it as it's called out.
  3. Today
  4. ---

    Drastic results on profiles and positions

    That's what i can sign all day long 👍
  5. ---

    Drastic results on profiles and positions

    @christopher Rudas Yes, the base alignment locates the part in the CMM measuring volume. At this stage in the game, do not worry about start alignments. Start alignments are when you have a more sophisticated base alignment. Your base alignment does NOT have to use any datums called out on the drawing. It may make sense, it may not depending on the size of the feature, location, etc. Your base alignment should be robust and repeatable. This is done by defining robust and repeatable features on your part and then correctly using them to restrain all six degrees of freedom (the exception being circular parts with no clocking features, for example a non spline shaft). The idea behind datums on a drawing is those are a theoretically exact point, axis or plane defined by the person who created the drawing as being important to the fit and function of the part. They can combine datums into a datum reference frame (for example A|B|C) to create a coordinate system for measurement (completely unrelated to your base alignment). There's lots of great information on these forums, in the Calypso help files (F1), and YouTube. Best of luck sir.
  6. ---

    Position of a Plane at an Angle

    We are using surface profile for this callout
  7. ---

    Drastic results on profiles and positions

    @DWC So I would use the base alignment to find the part and do I even worry about using start alignment or should I just select my datums for certain features as I go? this part for example my datums are easily accessible, only struggle I had was the rotation did not calculate. i have before made a program that i could not easily get to datums so i use other features of the part to get it aligned and as i program thru the part i then label what my datums are and select just those when choosing primary, secondary and tertiary for positions, profiles and what not. i appreciate this info as well thank you
  8. ---

    Position of a Plane at an Angle

    I have a similar question, I have a plane called back to two datums, one is another plane -D- which makes sense as it would just be a tolerance zone of parallel planes but its also dimensioned to C which is a circle which can only control translation which seems weird as parallel plane can rotate and move and it wouldn't change anything in my mind, I only have experience with Positional call-outs from a plane to a plane but this one is also at an angle and D is not at an angle, how would I go about setting this up?
  9. ---

    Drastic results on profiles and positions

    @christopher Rudas As a general rule your base alignment is to establish where exactly your part is for machine navigation. Simple 2d elements are your friend. Planes, lines, circles (not for rotation). So for example, judging by the trihedron in your picture, your part as I am standing in front of the CMM facing the bridge is laying perpendicular to the the granite. Use a four point plane on the largest plane facing you as Spatial (-Y axis) and your Y origin. Use the right inside plane (four point plane assuming it is a machined surface perpendicular to the large face in -Y) to control rotation in the +X space axis. Then, create a four point circle on the large inside diameter (single circle path, no cylinder, as your X and Z origins). Think about the six degrees of freedom... the best, most stable way to control all six degrees of freedom would be three mutually perpendicular planes. Obviously not all parts are cubes, so we rely on other standard geometries to restrict these degrees of freedom both physically, and within the software for calculating measurements. Using your picture in this example, imagine you tell the program that Circle 10 (a single point) controls the rotation in the +X axis... its going to do exactly that and give you all types of wrong information, and probably crash something to boot. Study up on alignment theory, and then turn it into practice on the machine to really grasp how important physical and virtual freedom restriction are for correct calculations.
  10. ---

    Drastic results on profiles and positions

    @Martin Jánský @DWC Using a plane as a rotational worked great, weird how it was running good in the beginning, Thanks for your help everyone
  11. ---

    Drastic results on profiles and positions

    @DWC @Martin Jánský this is now my rotation highlighted in red marking
  12. ---

    Drastic results on profiles and positions

    @DWC okay I have changed this now to a easy accessible plane for rotation and I can see how this one reacts, appreciate your feedback on this
  13. ---

    Drastic results on profiles and positions

    @christopher RudasUsing a circle as a way to control rotation is... ill advised.
  14. Thank you, I will have to put this thru testing soon.
  15. ---

    Drastic results on profiles and positions

    @Martin Jánský this is how i currently do it and im on calypso 25 with the new engines, next part i am going to try what you recommended and force the rotation by a plane and not a circle and see what results it will produce
  16. @Richard Stanich In your # ----Close Excel if running---- block of code, if the operators close the XLS file before the script fires and no other instances of Excel are open, the Get-Process cmdlet returns $null and the rest of the snippet doesn't execute except for the logging portion. In your # --- Copy latest .xls file --- block of code, I would add in the parameter -ErrorAction Stop at the critical functions. Also, if an operation does not execute, add a retry function call that detects if Excel is still running or locked up and terminates Excel and then retries that operation. This is your script with the following improvements - Manual console toggle Overwrite-on-start log file Safe logging with retry Excel auto-close at start Folder-building logic Integrated Copy-LatestXlsWithBackup with retry + Excel cleanup Old copy/delete code removed and replaced with function call # PowerShell script with improved logging, manual console toggle, and overwrite log file # --- Manual toggle for console output --- $EnableConsoleOutput = $false # Set to $false to disable console output # --- Initialize log file (overwrite) --- $scriptFolder = Split-Path -Parent $MyInvocation.MyCommand.Definition $logFile = Join-Path $scriptFolder "script_log.txt" "============================================================" | Out-File -FilePath $logFile -Encoding UTF8 "[($(Get-Date))] INFO: Script started." | Out-File -FilePath $logFile -Append if ($EnableConsoleOutput) { Write-Host "Script started." -ForegroundColor Green } # --- Safe logging function with retry logic --- function SafeAddContent($path, $value) { $maxRetries = 5 $retryDelay = 2 for ($i = 1; $i -le $maxRetries; $i++) { try { Add-Content -Path $path -Value $value break } catch { if ($i -eq $maxRetries) { Write-Host "Failed to write to log after $maxRetries attempts." -ForegroundColor Red } else { Start-Sleep -Seconds $retryDelay } } } } function LogInfo($message) { SafeAddContent $logFile "[($(Get-Date))] INFO: $message" if ($EnableConsoleOutput) { Write-Host "INFO: $message" -ForegroundColor Cyan } } function LogError($message) { SafeAddContent $logFile "[($(Get-Date))] ERROR: $message" if ($EnableConsoleOutput) { Write-Host "ERROR: $message" -ForegroundColor Red } } # ---Copy-LatestXlsWithBackup with Retry + Automatic Excel Cleanup --- function Copy-LatestXlsWithBackup { [CmdletBinding()] param( [Parameter(Mandatory)] [string]$Source, [Parameter(Mandatory)] [string]$Destination, [Parameter(Mandatory)] [string]$BackupDir, [int]$MaxRetries = 5, [int]$RetryDelaySeconds = 2 ) function Stop-ExcelProcesses { try { $procs = Get-Process -Name "EXCEL" -ErrorAction SilentlyContinue if ($procs) { LogInfo "Excel detected; attempting cleanup..." $procs | ForEach-Object { Stop-Process $_ -Force -ErrorAction SilentlyContinue } LogInfo "Excel processes terminated." } } catch { LogError "Unable to terminate Excel processes. Reason: $($_.Exception.Message)" } } function Invoke-WithRetry { param( [scriptblock]$Script, [string]$Action, [int]$MaxAttempts, [int]$Delay ) for ($attempt = 1; $attempt -le $MaxAttempts; $attempt++) { try { return & $Script } catch { $err = $_.Exception.Message if ($attempt -eq $MaxAttempts) { throw "Failed '$Action' after $MaxAttempts attempts. Last error: $err" } LogError "Action '$Action' failed: $err" Stop-ExcelProcesses LogInfo "Retrying '$Action' in $Delay seconds... (Attempt $attempt/$MaxAttempts)" Start-Sleep -Seconds $Delay } } } try { if (-not (Test-Path $Source)) { throw "Source path not found: $Source" } if (-not (Test-Path $Destination)) { throw "Destination path not found: $Destination" } if (-not (Test-Path $BackupDir)) { New-Item -ItemType Directory -Path $BackupDir -ErrorAction Stop | Out-Null LogInfo "Backup directory created: $BackupDir" } Set-Location $Source -ErrorAction Stop # Get newest XLS $latestFile = Get-ChildItem -Filter "*.xls" -File -ErrorAction Stop | Sort-Object CreationTime -Descending | Select-Object -First 1 if (-not $latestFile) { throw "No .xls files found in $Source" } LogInfo "Latest .xls file: $($latestFile.Name)" $timestamp = Get-Date -Format "yyyy-MM-dd_HHmmss" $newFile = "{0}_{1}{2}" -f $latestFile.BaseName, $timestamp, $latestFile.Extension $destFile = Join-Path $Destination $newFile $backupFile = Join-Path $BackupDir $newFile # Copy to destination Invoke-WithRetry -Action "Copy to destination" ` -MaxAttempts $MaxRetries -Delay $RetryDelaySeconds ` -Script { Copy-Item $latestFile.FullName $destFile -Force -ErrorAction Stop } LogInfo "File copied to: $destFile" # Backup Invoke-WithRetry -Action "Backup file" ` -MaxAttempts $MaxRetries -Delay $RetryDelaySeconds ` -Script { Copy-Item $latestFile.FullName $backupFile -Force -ErrorAction Stop } LogInfo "Backup created: $backupFile" # Delete original Invoke-WithRetry -Action "Delete original" ` -MaxAttempts $MaxRetries -Delay $RetryDelaySeconds ` -Script { Remove-Item $latestFile.FullName -Force -ErrorAction Stop } LogInfo "Original file deleted: $($latestFile.FullName)" } catch { LogError "Copy-LatestXlsWithBackup failed. Reason: $($_.Exception.Message)" } } # --- Close Excel if running --- LogInfo "Attempting to close Excel if running." try { Get-Process EXCEL -ErrorAction SilentlyContinue | ForEach-Object { Stop-Process $_ -Force } LogInfo "Excel processes terminated successfully (if any were running)." } catch { LogError "Failed to terminate Excel processes. Reason: $_" } # --- Define paths --- $source = "C:\\Users\\Public\\Documents\\Zeiss\\CALYPSO\\workarea\\results" $target = "V:\\CMM Data Files\\Excel Files\\Shoe Sphere-Micura" $backupDir = "C:\\Backup" LogInfo "Source path: $source" LogInfo "Target path: $target" # --- Check if target drive is available --- if (-Not (Test-Path $target)) { LogError "Target path '$target' is not accessible. Exiting script." exit 1 } # --- Check for setRunID2.txt --- $runIdFile = Join-Path $scriptFolder "setRunID2.txt" if (-Not (Test-Path $runIdFile)) { LogError "Required file 'setRunID2.txt' not found in $scriptFolder. Exiting script." exit 1 } LogInfo "Found setRunID2.txt. Reading folder names." # --- Read folder names --- $lines = Get-Content $runIdFile $parentFolder = $lines[0] $subFolder1 = $lines[1] $subFolder2 = $lines[2] $progFolder = $lines[3] LogInfo "Folder structure: $parentFolder\\$subFolder1\\$subFolder2\\$progFolder" # --- Create folder structure --- $fullPath = Join-Path $target "$parentFolder\\$subFolder1\\$subFolder2\\$progFolder" try { if (-Not (Test-Path $fullPath)) { New-Item -ItemType Directory -Path $fullPath -Force | Out-Null LogInfo "Created folder structure at '$fullPath'." } else { LogInfo "Folder already exists: $fullPath" } } catch { LogError "Failed to create folder structure at '$fullPath'. Reason: $_" exit 1 } # --- Wait for 5 seconds --- LogInfo "Waiting 5 seconds to ensure folders are ready." Start-Sleep -Seconds 5 # --- Use Robust Function to Copy the XLS File --- LogInfo "Starting robust copy of latest .xls file..." Copy-LatestXlsWithBackup -Source $source -Destination $fullPath -BackupDir $backupDir LogInfo "Script completed successfully." SafeAddContent $logFile "============================================================" if ($EnableConsoleOutput) { Write-Host "Script completed successfully." -ForegroundColor Green } exit 0
  17. ---

    Drastic results on profiles and positions

    I might be off course but I don't have Calypso in front of me. In the old software, you used the special button to rotate the coordinate system. I believe on the new system, you use the little icon in the lower right. You'll probably need to rotate about the X axis by 90° or -90°. Validate by verifying the nominal position values.
  18. ---

    Drastic results on profiles and positions

    One thing to note. As someone stated, don't use base alignment as your datums ref. It may not follow rule of creation of datum ref for ISO.
  19. ---

    Drastic results on profiles and positions

    Okay i can try switching rotation to a plane and see how that does, everything else seems fine to you? Thank you for your feedback on this.
  20. ---

    Drastic results on profiles and positions

    Seems like your GDT datum setup is wrong. Origin in XZ and primary axis is taken from cylinder1 Direction and Y origin will take plane Circle 1 is not used i think. What result would you have if you switch circle1 with plane?
  21. I have ran this program a handful of times and this is the first time I'm getting weird results on my report. has anyone seen this and can help out with any info on this or if im doing something wrong.
  22. ---

    Torus issue in Calypso 2025

    We just upgraded to 2025 and had a crash because of this issue. Adding move points at the beginning and the end resolved the issue for this part, but I will need to review all parts going forward to avoid this happing again. I can see situations where this could been a much more serious crash.
  23. ---

    Holy Smokes

    @Tom Oakes Lol. Well that one went straight over my head.
  24. ---

    Torus issue in Calypso 2025

    Thanks for the update. I use torus a lot, so hopefully I'll see when the fix is in, so I can update
  25. ---

    Torus issue in Calypso 2025

    Update...... It has been confirmed by Zeiss that this is a bug in the software.
  26. ---

    Radius 0,15mm messen

    I am not sure what you mean. Just copy your measured curve to keep nominals, no masked points in it - recall measured points and set feature's alignment as from curve bestfit. Selection box: choose number as nominal values from drawing - bestfit will move selection box to correct spot so you will have selected always the closest point to radius.
  1. Load more activity
×
×
  • Create New...