Project Demo#
Demonstration of Project-level services in Dips Python API.
This script demonstrates IProjStubService methods including: - Project Management: Save project - Unit System: Get/Set unit system - Reporting Convention: Get/Set reporting convention - Weighting Options: Get/Set weighting settings - Project Summary: Get/Set project summary - Display Options: Kinematic, Stereonet2D, Stereonet3D, General Symbol, Entity Color, Rosette
Code Snippet: ProjectDemo.py#
"""
Demonstration of Project-level services in Dips Python API.
This script demonstrates IProjStubService methods including:
- Project Management: Save project
- Unit System: Get/Set unit system
- Reporting Convention: Get/Set reporting convention
- Weighting Options: Get/Set weighting settings
- Project Summary: Get/Set project summary
- Display Options: Kinematic, Stereonet2D, Stereonet3D, General Symbol, Entity Color, Rosette
"""
import math
from dips import DipsApp
# Settings wrappers
from dips.WeightingSettingsVal import WeightingSettingsVal
from dips.ProjectSummaryVal import ProjectSummaryVal
from dips.KinematicAnalysisDisplayOptionsVal import KinematicAnalysisDisplayOptionsVal
from dips.Stereonet2DDisplayOptionsVal import Stereonet2DDisplayOptionsVal
from dips.Stereonet3DDisplayOptionsVal import Stereonet3DDisplayOptionsVal
from dips.GeneralSymbolDisplayOptionsVal import GeneralSymbolDisplayOptionsVal
from dips.EntityColorOptionsVal import EntityColorOptionsVal
from dips.RosettePlotDisplayOptionsVal import RosettePlotDisplayOptionsVal
# =============================================================================
# PROJECT MANAGEMENT DEMONSTRATIONS
# =============================================================================
def demonstrate_save_project(model):
"""Demonstrate saving the project."""
print("\n" + "=" * 60)
print("PROJECT MANAGEMENT")
print("=" * 60)
# Note: SaveProject requires a file path - this is just for demonstration
# In real usage you would provide a valid path
print(" - SaveProject: Skipped (requires file path)")
print(" Usage: model.SaveProject('C:/path/to/file.dips9')")
# =============================================================================
# UNIT SYSTEM DEMONSTRATIONS
# =============================================================================
def demonstrate_unit_system(model):
"""Demonstrate unit system get/set."""
print("\n" + "=" * 60)
print("UNIT SYSTEM")
print("=" * 60)
# Get current unit system
result = model.GetUnitSystem()
unit_name = result
print(f" ✓ GetUnitSystem: {unit_name}")
# Set unit system to Imperial
model.SetUnitSystem(DipsApp.enums.eUnitSystem.Imperial)
print(" ✓ SetUnitSystem: Imperial")
# =============================================================================
# REPORTING CONVENTION DEMONSTRATIONS
# =============================================================================
def demonstrate_reporting_convention(model):
"""Demonstrate reporting convention get/set."""
print("\n" + "=" * 60)
print("REPORTING CONVENTION")
print("=" * 60)
# Get current reporting convention
result = model.GetReportingConvention()
convention_name = result
print(f" ✓ GetReportingConvention: {convention_name}")
# Set reporting convention
model.SetReportingConvention(DipsApp.enums.eOrientationConvention.DipDipDirectionOrientation)
print(" ✓ SetReportingConvention: DipDipDirectionOrientation")
model.SetReportingConvention(DipsApp.enums.eOrientationConvention.TrendPlungeOrientation)
print(" ✓ SetReportingConvention: TrendPlungeOrientation")
# =============================================================================
# WEIGHTING OPTIONS DEMONSTRATIONS
# =============================================================================
def demonstrate_weighting_options(model):
"""Demonstrate weighting options get/set."""
print("\n" + "=" * 60)
print("WEIGHTING OPTIONS")
print("=" * 60)
# Get current weighting options
weighting = model.GetWeightingOptions()
option_name = weighting.weighting_option
min_bias_angle = weighting.minimum_bias_angle
print(f" ✓ GetWeightingOptions: weighting_option={option_name} min bias angle={math.degrees(min_bias_angle.angle_radians)}°")
# Set weighting options
weighting = model.GetDefaultWeightingSettings()
weighting.weighting_option = DipsApp.enums.eWeightingOption.TerzaghiWeighting
weighting.minimum_bias_angle.angle_radians = math.radians(10)
model.SetWeightingOptions(weighting)
print(" ✓ SetWeightingOptions: TerzaghiWeighting")
# =============================================================================
# PROJECT SUMMARY DEMONSTRATIONS
# =============================================================================
def demonstrate_project_summary(model):
"""Demonstrate project summary get/set."""
print("\n" + "=" * 60)
print("PROJECT SUMMARY")
print("=" * 60)
# Get current project summary
summary = model.GetProjectSummary()
print(f" ✓ GetProjectSummary: title='{summary.project_title}'")
# Set project summary
summary = model.GetDefaultProjectSummary()
summary.project_title = "Demo Project"
summary.company = "Demo Company"
summary.author = "Demo Author"
summary.comments = "This is a demo project created by the Python API."
model.SetProjectSummary(summary)
print(" ✓ SetProjectSummary: Updated project info")
# =============================================================================
# DISPLAY OPTIONS DEMONSTRATIONS
# =============================================================================
def demonstrate_kinematic_display_options(model):
"""Demonstrate kinematic analysis display options."""
print("\n" + "=" * 60)
print("KINEMATIC ANALYSIS DISPLAY OPTIONS")
print("=" * 60)
options = model.GetKinematicAnalysisDisplayOptions()
print(f" ✓ GetKinematicAnalysisDisplayOptions")
options = model.GetDefaultKinematicAnalysisDisplayOptions()
model.SetKinematicAnalysisDisplayOptions(options.to_proto())
print(" ✓ SetKinematicAnalysisDisplayOptions")
def demonstrate_stereonet2d_display_options(model):
"""Demonstrate Stereonet2D display options."""
print("\n" + "=" * 60)
print("STEREONET 2D DISPLAY OPTIONS")
print("=" * 60)
options = model.GetStereonet2DDisplayOptions()
print(f" ✓ GetStereonet2DDisplayOptions")
options = model.GetDefaultStereonet2DDisplayOptions()
model.SetStereonet2DDisplayOptions(options.to_proto())
print(" ✓ SetStereonet2DDisplayOptions")
def demonstrate_stereonet3d_display_options(model):
"""Demonstrate Stereonet3D display options."""
print("\n" + "=" * 60)
print("STEREONET 3D DISPLAY OPTIONS")
print("=" * 60)
options = model.GetStereonet3DDisplayOptions()
print(f" ✓ GetStereonet3DDisplayOptions")
options = model.GetDefaultStereonet3DDisplayOptions()
model.SetStereonet3DDisplayOptions(options.to_proto())
print(" ✓ SetStereonet3DDisplayOptions")
def demonstrate_general_symbol_display_options(model):
"""Demonstrate general symbol display options."""
print("\n" + "=" * 60)
print("GENERAL SYMBOL DISPLAY OPTIONS")
print("=" * 60)
options = model.GetGeneralSymbolDisplayOptions()
print(f" ✓ GetGeneralSymbolDisplayOptions")
options = model.GetDefaultGeneralSymbolDisplayOptions()
model.SetGeneralSymbolDisplayOptions(options.to_proto())
print(" ✓ SetGeneralSymbolDisplayOptions")
def demonstrate_entity_color_options(model):
"""Demonstrate entity color options."""
print("\n" + "=" * 60)
print("ENTITY COLOR OPTIONS")
print("=" * 60)
options = model.GetEntityColorOptions()
print(f" ✓ GetEntityColorOptions")
options = model.GetDefaultEntityColorOptions()
model.SetEntityColorOptions(options.to_proto())
print(" ✓ SetEntityColorOptions")
def demonstrate_rosette_display_options(model):
"""Demonstrate rosette plot display options."""
print("\n" + "=" * 60)
print("ROSETTE PLOT DISPLAY OPTIONS")
print("=" * 60)
options = model.GetRosettePlotDisplayOptions()
print(f" ✓ GetRosettePlotDisplayOptions")
options = model.GetDefaultRosettePlotDisplayOptions()
model.SetRosettePlotDisplayOptions(options.to_proto())
print(" ✓ SetRosettePlotDisplayOptions")
# =============================================================================
# MAIN
# =============================================================================
def main():
"""Main demonstration function."""
print("=" * 60)
print("Dips API - Project Services Demo")
print("=" * 60)
# Connect to Dips
print("\nConnecting to Dips application...")
app = DipsApp.LaunchApp(62535)
print("✓ Connected to Dips")
model = app.GetModel()
# Run all demonstrations
demonstrate_save_project(model)
demonstrate_unit_system(model)
demonstrate_reporting_convention(model)
demonstrate_weighting_options(model)
demonstrate_project_summary(model)
demonstrate_kinematic_display_options(model)
demonstrate_stereonet2d_display_options(model)
demonstrate_stereonet3d_display_options(model)
demonstrate_general_symbol_display_options(model)
demonstrate_entity_color_options(model)
demonstrate_rosette_display_options(model)
# Show the application
app.Show()
# Summary
print("\n" + "=" * 60)
print("DEMONSTRATION COMPLETE")
print("=" * 60)
print("""
Project services demonstrated (23 methods):
PROJECT MANAGEMENT (1 method):
- SaveProject (skipped - requires file path)
UNIT SYSTEM (2 methods):
- GetUnitSystem
- SetUnitSystem
REPORTING CONVENTION (2 methods):
- GetReportingConvention
- SetReportingConvention
WEIGHTING OPTIONS (2 methods):
- GetWeightingOptions
- SetWeightingOptions
PROJECT SUMMARY (2 methods):
- GetProjectSummary
- SetProjectSummary
DISPLAY OPTIONS (12 methods):
- GetKinematicAnalysisDisplayOptions
- SetKinematicAnalysisDisplayOptions
- GetStereonet2DDisplayOptions
- SetStereonet2DDisplayOptions
- GetStereonet3DDisplayOptions
- SetStereonet3DDisplayOptions
- GetGeneralSymbolDisplayOptions
- SetGeneralSymbolDisplayOptions
- GetEntityColorOptions
- SetEntityColorOptions
- GetRosettePlotDisplayOptions
- SetRosettePlotDisplayOptions
""")
if __name__ == "__main__":
main()