() |
# Purpose : This file provides an example of a call to the# function neutold_import_neutral()## This session file will open a existing database# ’plate.db’ and will export it to Neutral format# database by name plate_neutral.out.1. The same# file will be imported to demonstrate the effect# of the function.## Before running this session file run plate.ses# to create plate.db## This file can be run by starting a session of# Patran, and running this session file# through the "File","Session","Play" pulldown# menus on the menu bar.## The function neutold_import_neutral()# has the following arguments:## neutold_import_neutral# ( file_name,# group_name,# entity_toggle_flags,# minimum_id,# maximum_id,# offset )##---------------------------------------------------------------------# Variable DeclarationsSTRING s_file_name[32]STRING s_group_name[32]LOGICAL la_entity_toggle_flags(35)INTEGER ia_minimum_id(35)INTEGER ia_maximum_id(35)INTEGER ia_offset(35)INTEGER i_return_valueSTRING s_title[64]LOGICAL l_all_groupsINTEGER i_number_of_groupsINTEGER ia_group_entity_ids(4)#---------------------------------------------------------------------# Open the database "plate.db"uil_file_open.go("plate.db")#---------------------------------------------------------------------# Exporting following entity types to the file ’plate_neutral.out.1’# Entity types - Nodes, Elements, Material, Element Propertiesla_entity_toggle_flags(1) = TRUEla_entity_toggle_flags(2) = TRUEla_entity_toggle_flags(3) = TRUEla_entity_toggle_flags(4) = TRUEs_file_name = "plate_neutral.out"s_title = "File created by exporting Patran database"l_all_groups = FALSEi_number_of_groups = 1ia_group_entity_ids = [1, 0, 0, 0]#i_return_value = @ neutral_export2 @ ( s_file_name, @ s_title, @ la_entity_toggle_flags, @ l_all_groups, @ i_number_of_groups, @ ia_group_entity_ids )dump i_return_value# Closing the current database ’plate.db’.uil_file_close.go( )#---------------------------------------------------------------------# Opening a new database by name ’new.db’.uil_file_new.go( "", "new.db" )$? YES 36000002#---------------------------------------------------------------------# Importing the file with all entities in default_group.s_file_name = "plate_neutral.out.1"s_group_name = "default_group"ia_offset(1) = 3ia_offset(2) = 7#i_return_value = @ neutold_import_neutral @ ( s_file_name, @ s_group_name, @ la_entity_toggle_flags, @ ia_minimum_id, @ ia_maximum_id, @ ia_offset )dump i_return_value#---------------------------------------------------------------------() |
## Purpose : This file provides an example of a call to the# function neutral_export2()## This session file will open a existing database# ’plate.db’ and will export it to Neutral format# database by name plate_neutral.out.1.## Before running this session file run plate.ses# to create plate.db## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown# menus on the menu bar.## The function neutral_export2()# has the following arguments:## neutral_export2# ( file_name,# title,# entity_toggle_flags,# all_groups,# number_of_groups,# group_entity_ids )##---------------------------------------------------------------------# Variable DeclarationsSTRING s_file_name[32]STRING s_title[64]LOGICAL la_entity_toggle_flags(35)LOGICAL l_all_groupsINTEGER i_number_of_groupsINTEGER ia_group_entity_ids(4)INTEGER i_return_value#---------------------------------------------------------------------# Open the database "plate.db"uil_file_open.go("plate.db")#---------------------------------------------------------------------# Exporting following entity types to the file ’plate_neutral.out.1’# Entity types - Nodes, Elements, Material, Element Propertiesla_entity_toggle_flags(1) = TRUEla_entity_toggle_flags(2) = TRUEla_entity_toggle_flags(3) = TRUEla_entity_toggle_flags(4) = TRUEs_file_name = "plate_neutral.out"s_title = "File created by exporting Patran database"
l_all_groups = FALSEi_number_of_groups = 1ia_group_entity_ids = [1, 0, 0, 0]#i_return_value = @ neutral_export2 @ ( s_file_name, @ s_title, @ la_entity_toggle_flags, @ l_all_groups, @ i_number_of_groups, @ ia_group_entity_ids )dump i_return_value#---------------------------------------------------------------------() |
## Purpose : This file provides an example of a call to the# function p3_express_import()## This session file will open a new database by # name ’new.db’ and import a ’Express Neutral’# model named ’sgm_cv_block-hole.exp’.## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown # menus on the menu bar.## The function p3_express_import()# has the following arguments:## p3_express_import# ( option_file,# file_name,# geometry_tracking,# reset_tolerance,# tolerance_prompt,# return_entity_count,# entities )##---------------------------------------------------------------------# Variable DeclarationsSTRING s_option_file[32]STRING s_file_name[32]LOGICAL l_geometry_trackingLOGICAL l_reset_toleranceLOGICAL l_tolerance_promptLOGICAL l_return_entity_countINTEGER iaa_entities(64,2)INTEGER i_return_value#---------------------------------------------------------------------# Open a new database "new.db"uil_file_new.go("","new.db")$? YES 36000002#---------------------------------------------------------------------# Calling function to import model ’sgm_cv_block-hole.exp’.A log file# by name ’ComputerVision_Geometry.log.01’ will be written. Also form# will appear indicating the change in tolerance.s_file_name = "sgm_cv_block-hole.exp"l_geometry_tracking = TRUEl_reset_tolerance = TRUEl_tolerance_prompt = TRUEl_return_entity_count = TRUE#i_return_value = @ p3_express_import @ ( s_option_file, @ s_file_name, @ l_geometry_tracking, @ l_reset_tolerance, @ l_tolerance_prompt, @ l_return_entity_count, @ iaa_entities )dump i_return_valuedump iaa_entities#---------------------------------------------------------------------# Exiting the import operation without deleting the express file.i_return_value = @ p3_express_import_exit( TRUE, FALSE )dump i_return_value#---------------------------------------------------------------------() |
## Purpose : This file provides an example of a call to the# function p3_express_import_preview()## This session file will open a new database by # name ’new.db’ and find summary information of # a ’Express Neutral’ model named # ’sgm_cv_block-hole.exp’.## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown # menus on the menu bar.## The function p3_express_import_preview()# has the following arguments:## p3_express_import_preview# ( option_file,# file_name,# tolerance_check,# return_entity_count,# entities,# cad_attributes,# cad_tolerance,# shortest_curve_length )##---------------------------------------------------------------------# Variable DeclarationsSTRING s_option_file[32]STRING s_file_name[32]LOGICAL l_tolerance_checkLOGICAL l_return_entity_countINTEGER iaa_entities(64,2)STRING sa_cad_attributes[2](256)REAL r_cad_toleranceREAL r_shortest_curve_lengthINTEGER i_return_value#---------------------------------------------------------------------# Open a new database "new.db"uil_file_new.go("","new.db")$? YES 36000002#---------------------------------------------------------------------# Calling function to get the geometry information of the model # ’sgm_cv_block-hole.exp’ and calculate the tolerance also.s_file_name = "sgm_cv_block-hole.exp"l_tolerance_check = TRUEl_return_entity_count = TRUE#i_return_value = @ p3_express_import_preview @ ( s_option_file, @ s_file_name, @ l_tolerance_check, @ l_return_entity_count, @ iaa_entities, @ sa_cad_attributes, @ r_cad_tolerance, @ r_shortest_curve_length )dump i_return_valuedump iaa_entities, sa_cad_attributes, r_cad_tolerancedump r_shortest_curve_length#---------------------------------------------------------------------# Exiting the import operation without deleting the express file.i_return_value = @ p3_express_import_exit( TRUE, FALSE )dump i_return_value#--------------------------------------------------------------------- () |
## Purpose : This file provides an example of a call to the# function p3_express_import_exit()## This session file will open a new database by # name ’new.db’ and import a ’Express Neutral’# model named ’sgm_cv_block-hole.exp’. And exits# the import operation without deleting the # express file.## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown # menus on the menu bar.## The function p3_express_import_exit()# has the following arguments:## p3_express_import_exit# ( delete_option_file,# delete_express_file )##---------------------------------------------------------------------# Variable DeclarationsLOGICAL l_delete_option_fileLOGICAL l_delete_express_fileINTEGER i_return_valueSTRING s_option_file[32]STRING s_file_name[32]LOGICAL l_geometry_trackingLOGICAL l_reset_toleranceLOGICAL l_tolerance_promptLOGICAL l_return_entity_countINTEGER iaa_entities(64,2)#---------------------------------------------------------------------# Open a new database "new.db"uil_file_new.go("","new.db")$? YES 36000002#---------------------------------------------------------------------# Calling function to import model ’sgm_cv_block-hole.exp’.A log file# by name ’ComputerVision_Geometry.log.01’ will be written. Also form# will appear indicating the change in tolerance.s_file_name = "sgm_cv_block-hole.exp"l_geometry_tracking = TRUEl_reset_tolerance = TRUEl_tolerance_prompt = TRUEl_return_entity_count = TRUE#i_return_value = @ p3_express_import @ ( s_option_file, @ s_file_name, @ l_geometry_tracking, @ l_reset_tolerance, @ l_tolerance_prompt, @ l_return_entity_count, @ iaa_entities )dump i_return_valuedump iaa_entities#---------------------------------------------------------------------# Exiting the import operation without deleting the files.l_delete_option_file = FALSEl_delete_express_file = FALSE#i_return_value = @ p3_express_import_exit @ ( l_delete_option_file, @ l_delete_express_file )dump i_return_value#---------------------------------------------------------------------() |
## Purpose : This file provides an example of a call to the# function p3_express_options_file()## This session file will write an options file # named ’exampla.exp’ for express model named # ’sgm_cv_block-hole.exp’. Then will open a new # database by name ’new.db’ and import the same# ’Express Neutral’ model.## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown # menus on the menu bar.## The function p3_express_options_file()# has the following arguments:## p3_express_options_file# ( option_file,# versioning,# file_format,# action,# source,# transform_exists,# transformation,# number_of_groups,# group_names,# group_entities,# group_layers,# group_colors,# all_entities,# entities,# all_layers,# layers,# all_colors,# colors,# trimmed_curve_type,# trimmed_surface_type,# solid_representation )##---------------------------------------------------------------------# Variable DeclarationsSTRING s_option_file[16]LOGICAL l_versioningINTEGER i_file_formatINTEGER i_actionINTEGER i_sourceLOGICAL l_transform_existsREAL ra_transformation(12)INTEGER i_number_of_groupsSTRING sa_group_names[16](3)INTEGER iaa_group_entities(3,3)INTEGER iaa_group_layers(3,1)INTEGER iaa_group_colors(3,1)LOGICAL l_all_entitiesINTEGER ia_entities(64)LOGICAL l_all_layersINTEGER ia_layers(256)LOGICAL l_all_colorsINTEGER ia_colors(10)INTEGER i_trimmed_curve_typeINTEGER i_trimmed_surface_typeINTEGER i_solid_representationINTEGER i_return_valueSTRING s_file_name[32]LOGICAL l_geometry_trackingLOGICAL l_reset_toleranceLOGICAL l_tolerance_promptLOGICAL l_return_entity_countINTEGER iaa_entities(64,2)#---------------------------------------------------------------------# Calling function to write options file by name ’example.exp’. The # file will be written in ascii without the transformation matrix.s_option_file = "example.exp"i_file_format = 1i_action = 1# Making the source of the geometry entities as PDA ENGINEERING.i_source = 52054# Three groups will be created while importing. And entities will be # separated in these groups.i_number_of_groups =3sa_group_names(1) = "curve"sa_group_names(2) = "surface"sa_group_names(3) = "solid"iaa_group_entities = [[1 102 0][1 1002 0][1 2002 0]]# All layers and colors will be read in for each group.iaa_group_layers = [[-1][-1][-1]]iaa_group_colors = [[0][0][0]]l_all_entities = TRUEl_all_layers = TRUEl_all_colors = TRUE# Only preference for trimmed surface will be # set to ’only general trimmed surface’i_trimmed_curve_type = 3i_trimmed_surface_type = 2i_solid_representation = 3#i_return_value = @ p3_express_options_file @ ( s_option_file, @ l_versioning, @ i_file_format, @ i_action, @ i_source, @ l_transform_exists, @ ra_transformation, @ i_number_of_groups, @ sa_group_names, @ iaa_group_entities, @ iaa_group_layers, @ iaa_group_colors, @ l_all_entities, @ ia_entities, @ l_all_layers, @ ia_layers, @ l_all_colors, @ ia_colors, @ i_trimmed_curve_type, @ i_trimmed_surface_type, @ i_solid_representation )dump i_return_value#---------------------------------------------------------------------# Open a new database "new.db"uil_file_new.go("","new.db")$? YES 36000002#---------------------------------------------------------------------# Calling function to import model ’sgm_cv_block-hole.exp’. Using the# options file created. A log file by name # ’ComputerVision_Geometry.log.01’ will be written. Also form will # appear indicating the change in tolerance.s_file_name = "sgm_cv_block-hole.exp"l_geometry_tracking = TRUEl_reset_tolerance = TRUEl_tolerance_prompt = TRUEl_return_entity_count = TRUE#i_return_value = @ p3_express_import @ ( s_option_file, @ s_file_name, @ l_geometry_tracking, @ l_reset_tolerance, @ l_tolerance_prompt, @ l_return_entity_count, @ iaa_entities )$? NOFORALL 1000034dump i_return_valuedump iaa_entities#---------------------------------------------------------------------# Exiting the import operation without deleting the files.i_return_value = @ p3_express_import_exit( FALSE, FALSE )dump i_return_value#---------------------------------------------------------------------() |
FUNCTION attribute_import_body( output_name ) STRING output_name[] INTEGER i, status, nc, nsrf, nsol, entity_id(1), min_label, label STRING attr_name[VIRTUAL], psidentifier[256] INTEGER endLabel, startLabel, fid psidentifier = "SDL/TYSA_NAME" utl_process_spawn( "rm -f " // output_name, TRUE ) status = fio_openw( output_name, fid ) status = db_count_solid( nsol ) status = db_get_min_solid_label( min_label ) status = db_get_max_solid_label( endLabel ) label = min_label startLabel = label fio_writec( fid, "minimum solid label = %d \n", startLabel ) fio_writec( fid, "maximum solid label = %d \n\n", endLabel ) fio_writec( fid, "Identifier: %s\n",psidentifier ) fio_writec( fid, "Function: ps_get_body_string_attribute\n\n" ) IF( label > 0 ) THEN fio_writec( fid, "Number of solids = %d\n",nsol) FOR (i = startLabel TO endLabel) status = db_get_solid_id( label, entity_id(1) ) status = ps_get_body_string_attribute( entity_id(1), 4,psidentifier, 0, attr_name ) fio_writec( fid, "status from ps_get_body_string_attribute = %d \n", status ) IF( status == 0 ) THEN fio_writec( fid, "solid %d : Body Attribute name = %s\n",entity_id(1), attr_name ) END IF fio_writec( fid, "\n" ) label += 1 END FOR END IF status = db_count_surface( nsrf ) status = db_get_min_surface_label( min_label ) status = db_get_max_surface_label( endLabel ) label = min_label startLabel = label fio_writec( fid, "minimum surface label = %d \n", startLabel ) fio_writec( fid, "maximum surface label = %d \n", endLabel ) IF( label > 0 ) THEN fio_writec( fid, "Number of surfaces = %d\n",nsrf) FOR (i = startLabel TO endLabel) status = db_get_surface_id( label, entity_id(1) ) status = ps_get_body_string_attribute( entity_id(1), 3, psidentifier, 0, attr_name ) fio_writec( fid, "status from ps_get_body_string_attribute = %d \n", status ) IF( status == 0 ) THEN fio_writec( fid, "surface %d : Body Attribute name = %s\n",entity_id(1), attr_name ) END IF fio_writec( fid, "\n" ) label += 1 END FOR END IF status = db_count_curve( nc ) status = db_get_min_curve_label( min_label ) status = db_get_max_curve_label( endLabel ) label = min_label startLabel = label fio_writec( fid, "minimum curve label = %d \n", startLabel ) fio_writec( fid, "maximum curve label = %d \n", endLabel ) IF( label > 0 ) THEN fio_writec( fid, "Number of curves = %d\n",nc) FOR (i = startLabel TO endLabel) status = db_get_curve_id( label, entity_id(1) ) status = ps_get_body_string_attribute( entity_id(1), 2, psidentifier, 0, attr_name ) fio_writec( fid, "status from ps_get_body_string_attribute = %d\n", status ) IF( status == 0 ) THEN fio_writec( fid, "curve %d : Body Attribute name = %s\n", entity_id(1), attr_name ) END IF fio_writec( fid, "\n" ) label += 1 END FOR END IF fio_close( fid )END FUNCTION() |
FUNCTION attribute_import_topology( output_name ) STRING output_name[] INTEGER i, status, nc, nsrf, nsol, entity_id(1), min_label, label STRING attr_name[VIRTUAL], psidentifier[256] INTEGER endLabel, startLabel, fid psidentifier = "SDL/TYSA_NAME" utl_process_spawn( "rm -f " // output_name, TRUE ) status = fio_openw( output_name, fid ) status = db_count_solid( nsol ) status = db_get_min_solid_label( min_label ) status = db_get_max_solid_label( endLabel ) label = min_label startLabel = label fio_writec( fid, "minimum solid label = %d \n", startLabel ) fio_writec( fid, "maximum solid label = %d \n\n", endLabel ) fio_writec( fid, "Identifier: %s\n",psidentifier ) fio_writec( fid, "Function: ps_get_string_attribute\n\n" ) IF( label > 0 ) THEN fio_writec( fid, "Number of solids = %d\n",nsol) FOR (i = startLabel TO endLabel) status = db_get_solid_id( label, entity_id(1) ) status = ps_get_string_attribute( entity_id(1), 4,psidentifier, 0, attr_name ) fio_writec( fid, "status from ps_get_string_attribute = %d \n", status ) IF( status == 0 ) THEN fio_writec( fid, "solid %d : Attribute name = %s\n",entity_id(1), attr_name ) END IF fio_writec( fid, "\n" ) label += 1 END FOR END IF status = db_count_surface( nsrf ) status = db_get_min_surface_label( min_label ) status = db_get_max_surface_label( endLabel ) label = min_label startLabel = label fio_writec( fid, "minimum surface label = %d \n", startLabel ) fio_writec( fid, "maximum surface label = %d \n", endLabel ) IF( label > 0 ) THEN fio_writec( fid, "Number of surfaces = %d\n",nsrf) FOR (i = startLabel TO endLabel) status = db_get_surface_id( label, entity_id(1) ) status = ps_get_string_attribute( entity_id(1), 3, psidentifier, 0, attr_name ) fio_writec( fid, "status from ps_get_string_attribute = %d \n", status ) IF( status == 0 ) THEN fio_writec( fid, "surface %d : Attribute name = %s\n",entity_id(1), attr_name ) END IF fio_writec( fid, "\n" ) label += 1 END FOR END IF status = db_count_curve( nc ) status = db_get_min_curve_label( min_label ) status = db_get_max_curve_label( endLabel ) label = min_label startLabel = label fio_writec( fid, "minimum curve label = %d \n", startLabel ) fio_writec( fid, "maximum curve label = %d \n", endLabel ) IF( label > 0 ) THEN fio_writec( fid, "Number of curves = %d\n",nc) FOR (i = startLabel TO endLabel) status = db_get_curve_id( label, entity_id(1) ) status = ps_get_string_attribute( entity_id(1), 2, psidentifier, 0, attr_name ) fio_writec( fid, "status from ps_get_string_attribute = %d\n", status ) IF( status == 0 ) THEN fio_writec( fid, "curve %d : Attribute name = %s\n", entity_id(1), attr_name ) END IF fio_writec( fid, "\n" ) label += 1 END FOR END IF fio_close( fid )END FUNCTIONFUNCTION publication_import( output_name )$ This function searches for CAD tags from CATIA and creates a matched array of labels: p3 <-> CATIA
STRING output_name[]
STRING p3_labels[32](VIRTUAL), CATIA_labels[512](VIRTUAL)
INTEGER num_publications = 0
INTEGER i, status, nc, nsrf, nsol, entity_id(1)
INTEGER min_labelS, min_labelF, min_labelC, label
INTEGER endLabelS, endLabelF, endLabelC
STRING attr_name[VIRTUAL], battr_name[VIRTUAL], psidentifier[256]
INTEGER fid
STRING face_name_prefix[32], face_name[32], edge_name_prefix[32], edge_name[32]
INTEGER dummy(VIRTUAL), j, k, m
INTEGER faces(VIRTUAL),nfaces
INTEGER num_edges, number_loops, loop_ids(VIRTUAL), edge_orients(VIRTUAL), edge_ids(VIRTUAL)
REAL time(10)
INTEGER method, handle, attribute, internal_curve_id(1)
INTEGER num_faces_found = 0, num_edges_found = 0
INTEGER found_faces(VIRTUAL), found_edges(VIRTUAL)
LOGICAL face_found, edge_found
time(1) = sys_cputime() psidentifier = "SDL/TYSA_NAME" utl_process_spawn( "rm -f " // output_name, TRUE ) status = fio_openw( output_name, fid )status = db_count_solid( nsol )
status = db_get_min_solid_label( min_labelS )
status = db_get_max_solid_label( endLabelS )
status = db_count_surface( nsrf )
status = db_get_min_surface_label( min_labelF )
status = db_get_max_surface_label( endLabelF )
status = db_count_curve( nc )
status = db_get_min_curve_label( min_labelC )
status = db_get_max_curve_label( endLabelC )
$ Allocate space for array of face and edge ids to prevent duplicationsys_allocate_array( found_faces, 1, nsrf )
sys_allocate_array( found_edges, 1, nc )
$ Allocate space for array of labels to returnsys_allocate_array( p3_labels, 1, nsol+nsrf+nc )
sys_allocate_array( CATIA_labels, 1, nsol+nsrf+nc )
fio_writec( fid, "Solids: Number=%d minimum=%d maximum=%d \n",nsol, min_labelS, endLabelS )
fio_writec( fid, "Surfaces: Number=%d minimum=%d maximum=%d \n",nsrf, min_labelF, endLabelF)
fio_writec( fid, "Curves: Number=%d minimum=%d maximum=%d \n\n",nc, min_labelC, endLabelC )
fio_writec( fid, "Identifier: %s\n",psidentifier ) fio_writec( fid, "Function: ps_get_string_attribute\n\n" )if(min_labelF==0) THEN min_labelF = 1
if(endLabelF==0) THEN endLabelF = nsrf
if(min_labelC==0) THEN min_labelC = 1
if(endLabelC==0) THEN endLabelC = nc
IF( nsol > 0 ) THEN
FOR (i = min_labelS TO endLabelS)
status = db_get_solid_id( i, entity_id(1) )
status = ps_get_string_attribute( entity_id(1), 4, psidentifier, 0, attr_name )
IF( status == 0 ) THEN
status = db_get_solid_label( entity_id(1), label )
fio_writec( fid, "solid %d [Solid %d] : Attribute name = %s\n",label, entity_id(1), attr_name )
num_publications += 1
p3_labels(num_publications) = "Solid " // str_from_integer( label )
CATIA_labels(num_publications) = attr_name
END IF
$ do all faces on this solid:face_name_prefix = "Solid " // str_from_integer( i ) //"."
sgm_db_get_num_faces_body( entity_id(1),nfaces,status)
IF( status != 0) THEN
msg_to_form( status, 4, appcode(status),1,1.,"")
RETURN status
END IF
$ Allocate memory:
status = sys_allocate_array( faces, 1, nfaces )
IF( status != 0) THEN
msg_to_form( status, 4, appcode(status),1,1.,"")
RETURN status
END IF
status = sys_allocate_array( dummy, 1, nfaces )
IF( status != 0) THEN
msg_to_form( status, 4, appcode(status),1,1.,"")
RETURN status
END IF
$ Get the list of faces referenced by the body sgm_db_get_gen_body_face_ids( entity_id(1), nfaces, faces, dummy, @
dummy, status )
IF( status != 0) THEN
msg_to_form( status, 4, appcode(status),1,1.,"")
RETURN status
END IF
FOR( j = 1 TO nfaces )
face_name = face_name_prefix // str_from_integer( j )
$ fio_writec( fid, "Face name = %s Surface id = %d\n",face_name, faces(i) )
face_found = FALSE
FOR( m = 1 TO num_faces_found )
IF(found_faces(m)==faces(j)) THEN face_found = TRUE
END FOR
IF(face_found!=TRUE) THEN
status = ps_get_string_attribute( faces(j), 3, psidentifier, 0, attr_name )
IF( status == 0 ) THEN
fio_writec( fid, "%s [Face %d] : Attribute name = %s\n", @
face_name, faces(j), attr_name )
num_publications += 1
p3_labels(num_publications) = face_name
CATIA_labels(num_publications) = attr_name
num_faces_found += 1
found_faces(num_faces_found) = faces(j)
END IF
END IF
status = sgm_db_get_num_edges_face( faces(j), num_edges )
IF( status != 0 ) THEN BREAK
sgm_db_get_num_vertices_surface( faces(j), num_edges, status )
edge_name_prefix = face_name // "."
$ Allocate and initialize virtual strings
sys_allocate_array( edge_ids, 1, num_edges )
sys_allocate_array( loop_ids, 1, num_edges )
sys_allocate_array( edge_orients, 1, num_edges )
status = sgm_db_get_gen_face_edge_ids ( faces(i), number_loops, num_edges, @
loop_ids, edge_ids, edge_orients )
FOR( k = 1 TO num_edges )
edge_name = edge_name_prefix // str_from_integer( k )
$ method = LP_EVAL_FOR_ID = 4, LP_ATTRIBUTE_ID = 1
method = 4 ; attribute = 1
status = lp_eval( edge_name, method, handle )
IF(status==0) THEN
status = lp_sublist_attribute_get_int( handle, attribute, internal_curve_id )
END IF
lp_eval_cleanup(handle)
edge_found = FALSE
FOR( m = 1 TO num_edges_found )
IF(found_edges(m)==internal_curve_id(1)) THEN edge_found = TRUE
END FOR
IF(edge_found!=TRUE) THEN
status = ps_get_string_attribute( internal_curve_id(1), 2, psidentifier, 0, attr_name )
IF( status == 0 ) THEN
fio_writec( fid, "%s [Edge %d] : Attribute name = %s\n", @
edge_name, internal_curve_id(1), attr_name )
num_publications += 1
p3_labels(num_publications) = edge_name
CATIA_labels(num_publications) = attr_name
num_edges_found += 1
found_edges(num_edges_found) = internal_curve_id(1)
END IF
END IF
END FOR
END FOR
label += 1 END FOR END IF fio_writec( fid, "\n" ) battr_name = ""$ Get directly creates surfaces and curvesIF( nsrf > 0 ) THEN
FOR (i = min_labelF TO endLabelF)
/*status = db_get_surface_id( label, entity_id(1) )*/
entity_id(1) = i
face_found = FALSE
FOR( m = 1 TO num_faces_found )
IF(found_faces(m)==entity_id(1)) THEN face_found = TRUE
END FOR
IF(face_found!=TRUE) THEN
status = ps_get_string_attribute( entity_id(1), 3, psidentifier, 0, attr_name )
IF( status == 0 ) THEN
status = db_get_surface_label( entity_id(1), label )
$ a label of -1 means it is not an actual surface
IF(label!=-1) THEN
fio_writec( fid, "Surface %d [Face %d] : Attribute name = %s\n",@
label, entity_id(1), attr_name )
num_publications += 1
p3_labels(num_publications) = "Surface " // str_from_integer( label )
CATIA_labels(num_publications) = attr_name
num_faces_found += 1
found_faces(num_faces_found) = entity_id(1)
END IF
END IF
END IF
label += 1
END FOR
END IF
fio_writec( fid, "\n" )
battr_name = ""
IF( nc > 0 ) THEN
FOR (i = 1 TO endLabelC)
entity_id(1) = i
edge_found = FALSE
FOR( m = 1 TO num_edges_found )
IF(found_edges(m)==entity_id(1)) THEN edge_found = TRUE
END FOR
IF(edge_found!=TRUE) THEN
status = ps_get_string_attribute( entity_id(1), 2, psidentifier, 0, attr_name )
IF( status == 0 ) THEN
status = db_get_curve_label( entity_id(1), label )
$ a label of -1 means it is not an actual curve
IF(label!=-1) THEN
fio_writec( fid, "Curve %d [Edge %d] : Attribute name = %s\n", @
label, entity_id(1), attr_name )
num_publications += 1
p3_labels(num_publications) = "Curve " // str_from_integer( label )
CATIA_labels(num_publications) = attr_name
num_edges_found += 1
found_edges(num_edges_found) = entity_id(1)
END IF
END IF
END IF
label += 1
END FOR
END IF
fio_writec( fid, "\n" )
time(2) = sys_cputime()
fio_writec( fid, "Total computation time = %f seconds\n", time(2)-time(1) )
fio_close( fid )
IF( num_publications > 0 ) THENsys_reallocate_array( p3_labels, 1, num_publications )
sys_reallocate_array( CATIA_labels, 1, num_publications )
END IFdump p3_labels, CATIA_labels
RETURN num_publications
END FUNCTION() |
## Purpose : This file provides an example of a call to the# function select_focus.exit()## This session file will open a new database by # name ’new.db’. A curve and a surface will be # drawn so that the curve is overlapping with one# edge from the surface. # After this the session file will be paused and# the user will have to try to delete the curve # by screen picking. Which will make the # ’Selection’ window appear on the screen. The # session file will be resumed after that. In # effect this function will be executed and the # selection window will disappear.## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown# menus on the menu bar.## The function select_focus.exit() has no arguments.##---------------------------------------------------------------------# Variable DeclarationsINTEGER i_return_valueSTRING sv_asm_create_patch_xy_crtd_ids[VIRTUAL]STRING sv_asm_create_line_xyz_crtd_ids[VIRTUAL]#---------------------------------------------------------------------# Open a new database "new.db"uil_file_new.go("","new.db")$? YES 36000002#---------------------------------------------------------------------# Creating a curve.i_return_value = @ asm_const_line_xyz( "1", "<1 0 0>", "[0 0 0]", "Coord 0", @ sv_asm_create_line_xyz_crtd_ids )dump i_return_value# Drawing a surface so that an edge of the surface will overlap with# the curve.i_return_value = @ asm_const_patch_xyz( "1", "<1 1 0>", "[0 0 0]", "Coord 0", @ sv_asm_create_patch_xy_crtd_ids )dump i_return_value#---------------------------------------------------------------------# Session file paused. Press "Resume" to continue..# User should open the ’Geometry’ form and try to ’Delete’ the curve# by clicking on the screen. While trying this the ’Object’ should be# ’Any’. After the selection window appears on the screen the# ’Resume’ button should be pressed.sf_pause()#---------------------------------------------------------------------# Calling function to remove the selection window.#select_focus.exit()sys_free_string(sv_asm_create_patch_xy_crtd_ids)sys_free_string(sv_asm_create_line_xyz_crtd_ids)#---------------------------------------------------------------------e() |
## Purpose : This file provides an example of a call to the# function sgm_cad_access_v1()## This session file will open a new database by # name ’new.db’. UG file named ’asm002.prt’ is # imported with all its entities in default_group## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown# menus on the menu bar.## The function sgm_cad_access_v1()# has the following arguments:## sgm_cad_access_v1# ( file_name,# file_name_length,# group_name,# group_name_length,# entity_toggle_values,# simply_trimmed,# access_as_solids,# enable_tol_prompt,# color_toggle_values,# all_layers,# active_layer,# layer_numbers,# mod_type,# number_of_groups,# group_entity_ids,# group_entity_values,# group_color_values,# active_layer_values,# layer_pointers,# group_layers,# I_N_UG_LAYERS,# ug_count,# patran_count )##---------------------------------------------------------------------# Variable DeclarationsSTRING s_file_name[32]INTEGER i_file_name_lengthSTRING s_group_name[80]INTEGER i_group_name_lengthLOGICAL la_entity_toggle_values(35)LOGICAL l_simply_trimmedLOGICAL l_access_as_solidsLOGICAL l_enable_tol_promptLOGICAL la_color_toggle_values(14)LOGICAL l_all_layersLOGICAL l_active_layerINTEGER ia_layer_numbers(256)STRING s_mod_type[6]INTEGER i_number_of_groupsINTEGER ia_group_entity_ids(1)LOGICAL laa_group_entity_values(1,20)LOGICAL laa_group_color_values(1,14)LOGICAL la_active_layer_values(256)INTEGER ia_layer_pointers(1)INTEGER ia_group_layers(512)integer i_n_ug_layersINTEGER iaa_ug_count(256,37)INTEGER ia_patran_count(4)INTEGER i_return_value#---------------------------------------------------------------------# Open a new database "new.db"uil_file_new.go("","new.db")$? YES 36000002#---------------------------------------------------------------------# Calling function to import all entities from UG model ’asm002.prt’.# Tolerance prompt will be displayed on the screen.s_file_name = "asm002.prt"i_file_name_length =10s_group_name = "default_group"i_group_name_length = 13l_simply_trimmed = truel_enable_tol_prompt = truel_all_layers = trues_mod_type ="ug"i_number_of_groups =1ia_group_entity_ids =[1]ia_layer_pointers = [1]ia_group_layers(1) = 1la_entity_toggle_values=[true true true true true true true true true@ true true true true true true true true true true false false @ false false false false false false false false false false false @ false false false]laa_group_entity_values=[true true true true true true true true true@ true true true true true true true true true true false]#i_return_value = @ sgm_cad_access_v1 @ ( s_file_name, @ i_file_name_length, @ s_group_name, @ i_group_name_length, @ la_entity_toggle_values, @ l_simply_trimmed, @ l_access_as_solids, @ l_enable_tol_prompt, @ la_color_toggle_values, @ l_all_layers, @ l_active_layer, @ ia_layer_numbers, @ s_mod_type, @ i_number_of_groups, @ ia_group_entity_ids, @ laa_group_entity_values, @ laa_group_color_values, @ la_active_layer_values, @ ia_layer_pointers, @ ia_group_layers, @ i_n_ug_layers, @ iaa_ug_count, @ ia_patran_count )dump i_return_valuedump ia_patran_count,i_n_ug_layers#---------------------------------------------------------------------() |
## Purpose : This file provides an example of a call to the# function sgm_catia_access()## This session file will open a new database by # name ’new.db’. A Catia model named # ’catia_cam.cat’ will be imported in the default# group with all entities. Model will be made # visible on the screen.## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown# menus on the menu bar.## The function sgm_catia_access()# has the following arguments:## sgm_catia_access# ( file_name,# group_name,# group_name_length,# entity_toggle_values,# simply_trimmed,# color_toggle_values,# all_layers,# active_layer,# layer_numbers,# mod_type,# number_of_groups,# group_entity_ids,# group_entity_values,# group_color_values,# active_layer_values,# layer_pointers,# group_layers,# interactive_flag,# user_control_flag )##---------------------------------------------------------------------# Variable DeclarationsSTRING s_file_name[32]STRING s_group_name[32]INTEGER i_group_name_lengthLOGICAL la_entity_toggle_values(35)LOGICAL l_simply_trimmedLOGICAL la_color_toggle_values(14)LOGICAL l_all_layersLOGICAL l_active_layerINTEGER ia_layer_numbers(256)STRING s_mod_type[6]INTEGER i_number_of_groups = 1INTEGER ia_group_entity_ids(2)LOGICAL laa_group_entity_values(2,20)LOGICAL laa_group_color_values(2,14)LOGICAL la_active_layer_values(256)INTEGER ia_layer_pointers(2)INTEGER ia_group_layers(8)INTEGER i_interactive_flagINTEGER ia_user_control_flag(2)INTEGER i_return_value#---------------------------------------------------------------------# Open a new database "new.db"uil_file_new.go("","new.db")$? YES 36000002#---------------------------------------------------------------------# Importing all entities of file named "catia_cam.cat".s_file_name = "catia_cam.cat"s_group_name = "default_group"i_group_name_length = 13l_all_layers = TRUEs_mod_type = "catia"ia_group_entity_ids = [1,0]la_entity_toggle_values = [TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, @ TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, @ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, @ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE]#i_return_value = @ sgm_catia_access @ ( s_file_name, @ s_group_name, @ i_group_name_length, @ la_entity_toggle_values, @ l_simply_trimmed, @ la_color_toggle_values, @ l_all_layers, @ l_active_layer, @ ia_layer_numbers, @ s_mod_type, @ i_number_of_groups, @ ia_group_entity_ids, @ laa_group_entity_values, @ laa_group_color_values, @ la_active_layer_values, @ ia_layer_pointers, @ ia_group_layers, @ i_interactive_flag, @ ia_user_control_flag )dump i_return_value#---------------------------------------------------------------------# Model is made visible in the viewport.i_return_value = ga_view_corners_set([125.,-60.,0],[150.,-20.,0],1)dump i_return_value#---------------------------------------------------------------------() |
## Purpose : This file provides an example of a call to the# function sgm_catia_access_v1()## This session file will open a new database by # name ’new.db’. A Catia model named # ’catia_cam.cat’ will be imported in the default# group with all entities. Model will be made # visible on the screen.## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown# menus on the menu bar.## The function sgm_catia_access_v1()# has the following arguments:## sgm_catia_access_v1# ( file_name,# group_name,# group_name_length,# entity_toggle_values,# simply_trimmed,# enable_tol_prompt,# color_toggle_values,# all_layers,# active_layer,# layer_numbers,# mod_type,# number_of_groups,# group_entity_ids,# group_entity_values,# group_color_values,# active_layer_values,# layer_pointers,# group_layers,# interactive_flag,# user_control_flag )##---------------------------------------------------------------------# Variable DeclarationsSTRING s_file_name[32]STRING s_group_name[32]INTEGER i_group_name_lengthLOGICAL la_entity_toggle_values(35)LOGICAL l_simply_trimmedLOGICAL l_enable_tol_promptLOGICAL la_color_toggle_values(14)LOGICAL l_all_layersLOGICAL l_active_layerINTEGER ia_layer_numbers(256)STRING s_mod_type[6]INTEGER i_number_of_groups = 1INTEGER ia_group_entity_ids(2)LOGICAL laa_group_entity_values(2,20)LOGICAL laa_group_color_values(2,14)LOGICAL la_active_layer_values(256)INTEGER ia_layer_pointers(2)INTEGER ia_group_layers(8)INTEGER i_interactive_flagINTEGER ia_user_control_flag(2)INTEGER i_return_value#---------------------------------------------------------------------# Open a new database "new.db"uil_file_new.go("","new.db")$? YES 36000002#---------------------------------------------------------------------# Importing all entities of file named "catia_cam.cat". Form # indicating proposed change in tolerance will appear on the screen.s_file_name = "catia_cam.cat"s_group_name = "default_group"i_group_name_length = 13l_enable_tol_prompt = TRUEl_all_layers = TRUEs_mod_type = "catia"ia_group_entity_ids = [1,0]la_entity_toggle_values = [TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, @ TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, @ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, @ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE]#i_return_value = @ sgm_catia_access_v1 @ ( s_file_name, @ s_group_name, @ i_group_name_length, @ la_entity_toggle_values, @ l_simply_trimmed, @ l_enable_tol_prompt, @ la_color_toggle_values, @ l_all_layers, @ l_active_layer, @ ia_layer_numbers, @ s_mod_type, @ i_number_of_groups, @ ia_group_entity_ids, @ laa_group_entity_values, @ laa_group_color_values, @ la_active_layer_values, @ ia_layer_pointers, @ ia_group_layers, @ i_interactive_flag, @ ia_user_control_flag )dump i_return_value#---------------------------------------------------------------------# Model is made visible in the viewport.i_return_value =ga_view_corners_set([125.,-60.,0],[150.,-20.,0],1)dump i_return_value#---------------------------------------------------------------------() |
## Purpose : This file provides an example of a call to the# function sgm_euclid_access()## This session file will open a new database by # name ’new.db’. A Euclid model named # ’euclid_exo_2.pat’ will be imported in the # default group with all entities. Model will be# made visible on the screen.## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown# menus on the menu bar.## The function sgm_euclid_access()# has the following arguments:## sgm_euclid_access# ( file_name,# group_name,# group_name_length,# entity_toggle_values,# simply_trimmed,# color_toggle_values,# all_layers,# active_layer,# layer_numbers,# mod_type,# number_of_groups,# group_entity_ids,# group_entity_values,# group_color_values,# active_layer_values,# layer_pointers,# group_layers,# interactive_flag,# user_control_flag )##---------------------------------------------------------------------# Variable DeclarationsSTRING s_file_name[32]STRING s_group_name[32]INTEGER i_group_name_lengthLOGICAL la_entity_toggle_values(35)LOGICAL l_simply_trimmedLOGICAL la_color_toggle_values(14)LOGICAL l_all_layersLOGICAL l_active_layerINTEGER ia_layer_numbers(256)STRING s_mod_type[6]INTEGER i_number_of_groups = 1INTEGER ia_group_entity_ids(2)LOGICAL laa_group_entity_values(2,20)LOGICAL laa_group_color_values(2,14)LOGICAL la_active_layer_values(256)INTEGER ia_layer_pointers(2)INTEGER ia_group_layers(8)INTEGER i_interactive_flagINTEGER ia_user_control_flag(2)INTEGER i_return_value#---------------------------------------------------------------------# Open a new database "new.db"uil_file_new.go("","new.db")$? YES 36000002#---------------------------------------------------------------------# Importing all entities of file named "euclid_exo_2.pat".s_file_name = "euclid_exo_2.pat"s_group_name = "default_group"i_group_name_length = 13l_all_layers = TRUEs_mod_type = "euclid"ia_group_entity_ids = [1,0]la_entity_toggle_values = [TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, @ TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, @ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, @ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE]#i_return_value = @ sgm_euclid_access @ ( s_file_name, @ s_group_name, @ i_group_name_length, @ la_entity_toggle_values, @ l_simply_trimmed, @ la_color_toggle_values, @ l_all_layers, @ l_active_layer, @ ia_layer_numbers, @ s_mod_type, @ i_number_of_groups, @ ia_group_entity_ids, @ laa_group_entity_values, @ laa_group_color_values, @ la_active_layer_values, @ ia_layer_pointers, @ ia_group_layers, @ i_interactive_flag, @ ia_user_control_flag )dump i_return_value#---------------------------------------------------------------------# Model is made visible in the viewport.i_return_value =ga_view_corners_set([-70.,-70.,0],[70.,70.,0],1)dump i_return_value#---------------------------------------------------------------------() |
## Purpose : This file provides an example of a call to the# function sgm_euclid_access_v1()## This session file will open a new database by # name ’new.db’. A Euclid model named # ’euclid_exo_2.pat’ will be imported in the # default group with all entities. Model will be# made visible on the screen.## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown# menus on the menu bar.## The function sgm_euclid_access_v1()# has the following arguments:## sgm_euclid_access_v1# ( file_name,# group_name,# group_name_length,# entity_toggle_values,# simply_trimmed,# enable_tol_prompt,# color_toggle_values,# all_layers,# active_layer,# layer_numbers,# mod_type,# number_of_groups,# group_entity_ids,# group_entity_values,# group_color_values,# active_layer_values,# layer_pointers,# group_layers,# interactive_flag,# user_control_flag )##---------------------------------------------------------------------# Variable DeclarationsSTRING s_file_name[32]STRING s_group_name[32]INTEGER i_group_name_lengthLOGICAL la_entity_toggle_values(35)LOGICAL l_simply_trimmedLOGICAL l_enable_tol_promptLOGICAL la_color_toggle_values(14)LOGICAL l_all_layersLOGICAL l_active_layerINTEGER ia_layer_numbers(256)STRING s_mod_type[6]INTEGER i_number_of_groups = 1INTEGER ia_group_entity_ids(2)LOGICAL laa_group_entity_values(2,20)LOGICAL laa_group_color_values(2,14)LOGICAL la_active_layer_values(256)INTEGER ia_layer_pointers(2)INTEGER ia_group_layers(8)INTEGER i_interactive_flagINTEGER ia_user_control_flag(2)INTEGER i_return_value#---------------------------------------------------------------------# Open a new database "new.db"uil_file_new.go("","new.db")$? YES 36000002#---------------------------------------------------------------------# Importing all entities of file named "euclid_exo_2.pat". Form # indicating proposed change in tolerance will appear on the screen.s_file_name = "euclid_exo_2.pat"s_group_name = "default_group"i_group_name_length = 13l_enable_tol_prompt = TRUEl_all_layers = TRUEs_mod_type = "euclid"ia_group_entity_ids = [1,0]la_entity_toggle_values = [TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, @ TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, @ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, @ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE]#i_return_value = @ sgm_euclid_access_v1 @ ( s_file_name, @ s_group_name, @ i_group_name_length, @ la_entity_toggle_values, @ l_simply_trimmed, @ l_enable_tol_prompt, @ la_color_toggle_values, @ l_all_layers, @ l_active_layer, @ ia_layer_numbers, @ s_mod_type, @ i_number_of_groups, @ ia_group_entity_ids, @ laa_group_entity_values, @ laa_group_color_values, @ la_active_layer_values, @ ia_layer_pointers, @ ia_group_layers, @ i_interactive_flag, @ ia_user_control_flag )dump i_return_value#---------------------------------------------------------------------# Model is made visible in the viewport.i_return_value =ga_view_corners_set([-70.,-70.,0],[70.,70.,0],1)dump i_return_value#---------------------------------------------------------------------() |
## Purpose : This file provides an example of a call to the# function sgm_intersect_curves()## This session file will create a new database by# name new.db and will draw two curves. These# curves will be used for finding out minimum# distance between the two.## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown# menus on the menu bar.## The function sgm_intersect_curves()# has the following arguments:## sgm_intersect_curves# ( curve1,# curve2,# distance,# u1,# u2,# xyz1,# xyz2 )##---------------------------------------------------------------------# Variable DeclarationsREAL rv_curve1(VIRTUAL)REAL rv_curve2(VIRTUAL)REAL r_distanceREAL r_u1REAL r_u2REAL ra_xyz1(3)REAL ra_xyz2(3)INTEGER i_return_valueINTEGER i_blob_sizeSTRING sv_asm_create_line_xyz_crtd_ids[VIRTUAL]#---------------------------------------------------------------------# Open a new database "new.db"uil_file_new.go("","new.db")$? YES 36000002#---------------------------------------------------------------------# Creating two parallel lines.i_return_value = @ asm_const_line_xyz( "1", "<1 0 0>", "[0 0 0]","Coord 0",@ sv_asm_create_line_xyz_crtd_ids )dump i_return_valuei_return_value = @ asm_const_line_xyz( "2", "<1 0 0>", "[0 1 1]","Coord 0",@ sv_asm_create_line_xyz_crtd_ids )dump i_return_value#---------------------------------------------------------------------# Getting the blob size for curves(entity type = 2) and allocating # the memory for getting the information for curves.# For curve ID. 1sgm_db_get_blob_size(2,1,i_blob_size,i_return_value)dump i_return_valuesys_allocate_array(rv_curve1,1,i_blob_size)sgm_db_get_curve(1,i_blob_size,rv_curve1,i_return_value)dump i_return_value# For curve ID. 2sgm_db_get_blob_size(2,2,i_blob_size,i_return_value)dump i_return_valuesys_allocate_array(rv_curve2,1,i_blob_size)sgm_db_get_curve(2,i_blob_size,rv_curve2,i_return_value)dump i_return_value#---------------------------------------------------------------------# Calling the function two get the minimum distance.#i_return_value = @ sgm_intersect_curves @ ( rv_curve1, @ rv_curve2, @ r_distance, @ r_u1, @ r_u2, @ ra_xyz1, @ ra_xyz2 )dump i_return_valuedump r_distance,r_u1,r_u2,ra_xyz1,ra_xyz2sys_free_array(rv_curve1)sys_free_array(rv_curve2)sys_free_string(sv_asm_create_line_xyz_crtd_ids)#---------------------------------------------------------------------() |
## Purpose : This file provides an example of a call to the# function sgm_nearest_point_on_surface()## This session file will create a new database by# name new.db and will draw a X-Y surface. This # surface will be used for finding out minimum # distance of a point(1,1,1) from the surface.## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown# menus on the menu bar.## The function sgm_nearest_point_on_surface()# has the following arguments:## sgm_nearest_point_on_surface# ( point,# surface,# u,# v,# xyz )##---------------------------------------------------------------------# Variable DeclarationsREAL ra_point(3)REAL rv_surface(VIRTUAL)REAL r_uREAL r_vREAL raa_xyz(3,4)INTEGER i_return_valueINTEGER i_blob_sizeSTRING sv_asm_create_patch_xy_crtd_ids[VIRTUAL]#---------------------------------------------------------------------# Open a new database "new.db"uil_file_new.go("","new.db")$? YES 36000002#---------------------------------------------------------------------# Creating a patch.i_return_value = @ asm_const_patch_xyz( "1","<1 1 0>","[0 0 0]","Coord 0", @ sv_asm_create_patch_xy_crtd_ids )dump i_return_value# Getting the blob size for surface(entity type = 3) and allocating# the memory for getting the information for surface(Surface ID = 1).sgm_db_get_blob_size(3,1,i_blob_size,i_return_value)dump i_return_valuesys_allocate_array(rv_surface,1,i_blob_size)sgm_db_get_surface(1,i_blob_size,rv_surface,i_return_value)dump i_return_value#---------------------------------------------------------------------# Calling the function to find out shortest distance between the # Surface and point at (1,1,1).ra_point = [1.,1.,1.]#i_return_value = @ sgm_nearest_point_on_surface @ ( ra_point, @ rv_surface, @ r_u, @ r_v, @ raa_xyz )dump i_return_valuedump r_u,r_v,raa_xyzsys_free_array(rv_surface)sys_free_string(sv_asm_create_patch_xy_crtd_ids)#---------------------------------------------------------------------() |
## Purpose : This file provides an example of a call to the# function sgm_ptc_access_v2()## This session file will open a new database by # name ’new.db’. A Pro/ENGINEER geometry file # named ’gn-0348.geo’ will be imported with all # entities. Model will be made visible on the # screen.## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown# menus on the menu bar.## The function sgm_ptc_access_v2()# has the following arguments:## sgm_ptc_access_v2# ( file_name,# file_type,# simply_trimmed,# create_groups,# save_geo_file,# enable_tol_prompt,# pro_entities,# pro_count,# patran_count )##---------------------------------------------------------------------# Variable DeclarationsSTRING s_file_name[32]STRING s_file_type[3]LOGICAL l_simply_trimmedLOGICAL l_create_groupsLOGICAL l_save_geo_fileLOGICAL l_enable_tol_promptINTEGER ia_pro_entities(17)INTEGER ia_pro_count(9)INTEGER ia_patran_count(7)INTEGER i_return_value#---------------------------------------------------------------------# Open a new database "new.db"uil_file_new.go("","new.db")$? YES 36000002#---------------------------------------------------------------------# Importing all entities of file named "euclid_exo_2.pat". Form # indicating proposed change in tolerance will appear on the screen.s_file_name = "gn-0348.geo"s_file_type = "GEO"l_simply_trimmed = TRUEl_create_groups = TRUEl_enable_tol_prompt = TRUEia_pro_entities = [16, 1, 2, 3, 4, 108, 114, @ 118, 120, 122, 128, 154, 156, 160, 170, 172, 174]#i_return_value = @ sgm_ptc_access_v2 @ ( s_file_name, @ s_file_type, @ l_simply_trimmed, @ l_create_groups, @ l_save_geo_file, @ l_enable_tol_prompt, @ ia_pro_entities, @ ia_pro_count, @ ia_patran_count )dump i_return_value, ia_pro_count, ia_patran_count#---------------------------------------------------------------------() |
## Purpose : This file provides an example of a call to the# function uil_db_commit()## This session file will open a new database by # name ’new.db’. Initially a line will be drawn # and ’uil_db_commit’ function will be called.# After this one more line will be created and# ’uil_db_undo’ function will be called twice to# undo both the lines.## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown # menus on the menu bar.## The function uil_db_commit()# has the following arguments:## uil_db_commit# ( command )##---------------------------------------------------------------------# Variable DeclarationsSTRING sa_command[32]INTEGER i_return_valueSTRING sv_asm_create_line_xyz_crtd_ids[VIRTUAL]#---------------------------------------------------------------------# Open a new database "new.db"uil_file_new.go("","new.db")$? YES 36000002#---------------------------------------------------------------------# Creating line with id ’Line 1’i_return_value = @ asm_const_line_xyz( "1", "<1 1 0>", "[0 0 0]", @ "Coord 0", sv_asm_create_line_xyz_crtd_ids )dump i_return_value#---------------------------------------------------------------------# The line creation will be committed.sa_command = "committed"#uil_db_commit @ ( sa_command )#---------------------------------------------------------------------# Creating line with id ’Line 2’i_return_value = @ asm_const_line_xyz( "2", "<2 1 0>", "[0 0 0]", @ "Coord 0", sv_asm_create_line_xyz_crtd_ids )dump i_return_value#---------------------------------------------------------------------# Attempt will be made to undo the line ’Line 2’.uil_db_undo()# Attempt will be made to undo the line ’Line 1’.uil_db_undo()#---------------------------------------------------------------------sys_free_string(sv_asm_create_line_xyz_crtd_ids)#---------------------------------------------------------------------() |
## Purpose : This file provides an example of two calls to # the function uil_db_undo()## This session file will open a new database by # name ’new.db’. Initially a line will be drawn # and ’uil_db_commit’ function will be called.# After this one more line will be created and# ’uil_db_undo’ function will be called twice to# undo both the lines.## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown # menus on the menu bar.## The function uil_db_undo() has no arguments.##---------------------------------------------------------------------# Variable DeclarationsSTRING sa_command[32]INTEGER i_return_valueSTRING sv_asm_create_line_xyz_crtd_ids[VIRTUAL]#---------------------------------------------------------------------# Open a new database "new.db"uil_file_new.go("","new.db")$? YES 36000002#---------------------------------------------------------------------# Creating line with id ’Line 1’i_return_value = @ asm_const_line_xyz( "1", "<1 1 0>", "[0 0 0]", @ "Coord 0", sv_asm_create_line_xyz_crtd_ids )dump i_return_value#---------------------------------------------------------------------# The line creation will be committed.sa_command = "committed"#uil_db_commit @ ( sa_command )#---------------------------------------------------------------------# Creating line with id ’Line 2’i_return_value = @ asm_const_line_xyz( "2", "<2 1 0>", "[0 0 0]", @ "Coord 0", sv_asm_create_line_xyz_crtd_ids )dump i_return_value#---------------------------------------------------------------------# Attempt will be made to undo the line ’Line 2’.uil_db_undo()# Attempt will be made to undo the line ’Line 1’.uil_db_undo()#---------------------------------------------------------------------sys_free_string(sv_asm_create_line_xyz_crtd_ids)#---------------------------------------------------------------------() |
## Purpose : This file provides an example of a call to the# function uil_file_close.go()## This session file will create a new database by# using ’template.db’ in P3_HOME directory by# the name new.db. Session file execution will be# paused. After pressing ’Resume’ button the # database will be closed and the same will be # reopened.## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown# menus on the menu bar.## The function uil_file_close.go() has no arguments.##---------------------------------------------------------------------# Variable DeclarationsSTRING s_template_name[32]STRING s_file_name[32]INTEGER i_return_value#---------------------------------------------------------------------# Create a database using ’template.db’ in P3_HOME directory.s_template_name = ""s_file_name = "new.db"#i_return_value = @ uil_file_new.go @ ( s_template_name, @ s_file_name )$? YES 36000002dump i_return_value#---------------------------------------------------------------------# Session file paused. Press "Resume" to continue..sf_pause()#---------------------------------------------------------------------# Database will be closed.#uil_file_close.go()#---------------------------------------------------------------------# The same database will be reopened.#i_return_value = @ uil_file_open.go @ ( s_file_name )dump i_return_value#---------------------------------------------------------------------() |
## Purpose : This file provides an example of a call to the# function uil_file_new.go()## This session file will create a new database by# using ’template.db’ in P3_HOME directory by# the name new.db.## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown# menus on the menu bar.## The function uil_file_new.go()# has the following arguments:## uil_file_new.go# ( template_name,# file_name )##---------------------------------------------------------------------# Variable DeclarationsSTRING s_template_name[32]STRING s_file_name[32]INTEGER i_return_value#---------------------------------------------------------------------# Create a database using ’template.db’ in P3_HOME directory.s_template_name = ""s_file_name = "new.db"#i_return_value = @ uil_file_new.go @ ( s_template_name, @ s_file_name )dump i_return_value#---------------------------------------------------------------------() |
## Purpose : This file provides an example of a call to the# function uil_file_open.go()## This session file will create a new database by# using ’template.db’ in P3_HOME directory by# the name new.db, closes the same and reopens.## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown# menus on the menu bar.## The function uil_file_open.go()# has the following arguments:## uil_file_open.go# ( file_name )##---------------------------------------------------------------------# Variable DeclarationsSTRING s_template_name[32]STRING s_file_name[32]INTEGER i_return_value#---------------------------------------------------------------------# Create a database using ’template.db’ in P3_HOME directory.s_template_name = ""s_file_name = "new.db"#i_return_value = @ uil_file_new.go @ ( s_template_name, @ s_file_name )$? YES 36000002dump i_return_value#---------------------------------------------------------------------# Database will be closed.#uil_file_close.go()#---------------------------------------------------------------------# Session file paused. Press "Resume" to continue..sf_pause()#---------------------------------------------------------------------# The same database will be reopened.#i_return_value = @ uil_file_open.go @ ( s_file_name )dump i_return_value#---------------------------------------------------------------------() |
## Purpose : This file provides an example of a call to the# function uil_imaging_coordframes.post_cf()## This session file will open a existing database# of name ’view.db’ tile the three viewports. A # cylindrical coordinate frame will be created. # The ’unpost’ function will demonstrate the # unposting of the created coordinate frame and# the ’post’ function will post the coordinate # frame after a pause.## Before running this session file run view.ses# to create view.db## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown# menus on the menu bar.## The function uil_imaging_coordframes.post_cf()# has the following arguments:## uil_imaging_coordframes.post_cf# ( contents )##---------------------------------------------------------------------# Variable DeclarationsSTRING s_contents[16]INTEGER i_return_valueSTRING sv_asm_create_cord_3po_crtd_ids[VIRTUAL]#---------------------------------------------------------------------# Open the database "view.db"uil_file_open.go("view.db")#---------------------------------------------------------------------# Tiling all the viewports.i_return_value = ga_viewport_post("default_viewport")dump i_return_valuei_return_value = ga_viewport_post("view1")dump i_return_valuei_return_value = ga_viewport_post("view2")dump i_return_valueuil_viewport_tiling.tile( )#---------------------------------------------------------------------# Creating a coordinate frame. The frame will be posted by the create# function.i_return_value = @ asm_const_coord_3point( "1", "Coord 0", 2, "[0 0 0]", "[0 0 1]", @ "[1 0 0]", sv_asm_create_cord_3po_crtd_ids )dump i_return_value#---------------------------------------------------------------------# Unposting the coordinate frame "Coord 1".s_contents = "Coord 1"#i_return_value = @ uil_imaging_coordframes.unpost_cf @ ( s_contents )dump i_return_value#---------------------------------------------------------------------# Session file paused. Press "Resume" to continue..sf_pause()#---------------------------------------------------------------------# The coordinate frame "Coord 1" will be posted.#i_return_value = @ uil_imaging_coordframes.post_cf @ ( s_contents )dump i_return_valuesys_free_string(sv_asm_create_cord_3po_crtd_ids)#---------------------------------------------------------------------() |
## Purpose : This file provides an example of a call to the# function uil_imaging_coordframes.unpost_cf()## This session file will open a existing database# of name ’view.db’ tile the three viewports. A # cylindrical coordinate frame will be created. # The function will demonstrate the unposting of# the created coordinate frame.## Before running this session file run view.ses# to create view.db## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown# menus on the menu bar.## The function uil_imaging_coordframes.unpost_cf()# has the following arguments:## uil_imaging_coordframes.unpost_cf# ( contents )##---------------------------------------------------------------------# Variable DeclarationsSTRING s_contents[16]INTEGER i_return_valueSTRING sv_asm_create_cord_3po_crtd_ids[VIRTUAL]#---------------------------------------------------------------------# Open the database "view.db"uil_file_open.go("view.db")#---------------------------------------------------------------------# Tiling all the viewports.i_return_value = ga_viewport_post("default_viewport")dump i_return_valuei_return_value = ga_viewport_post("view1")dump i_return_valuei_return_value = ga_viewport_post("view2")dump i_return_valueuil_viewport_tiling.tile( )#---------------------------------------------------------------------# Creating a coordinate frame. The frame will be posted by the create# function.i_return_value = @ asm_const_coord_3point( "1", "Coord 0", 2, "[0 0 0]", "[0 0 1]", @ "[1 0 0]", sv_asm_create_cord_3po_crtd_ids )dump i_return_value#---------------------------------------------------------------------# Session file paused. Press "Resume" to continue..sf_pause()#---------------------------------------------------------------------# Unposting the coordinate frame "Coord 1".s_contents = "Coord 1"#i_return_value = @ uil_imaging_coordframes.unpost_cf @ ( s_contents )dump i_return_valuesys_free_string(sv_asm_create_cord_3po_crtd_ids)#---------------------------------------------------------------------() |
## Purpose : This file provides an example of a call to the# function uil_primary.get_menubar_id()## This function gets the widget id of the# primary menubar## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown # menus on the menu bar.## The function uil_primary.get_menubar_id() has no arguments.##---------------------------------------------------------------------# Variable DeclarationsWIDGET w_return_value#---------------------------------------------------------------------# Calling function to get the primary menubar ID.#w_return_value = uil_primary.get_menubar_id()dump w_return_value#---------------------------------------------------------------------() |
## Purpose : This file provides an example of a call to the# function uil_viewport_tiling.tile()## This session file will create a new database by# name ’new.db’ and three viewports at different# locations and of different size will be created# and tiled after a pause.## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown# menus on the menu bar.## The function uil_viewport_tiling.tile() has no arguments.##---------------------------------------------------------------------# Variable DeclarationsINTEGER i_return_value#---------------------------------------------------------------------# Open a new database "new.db"uil_file_new.go("","new.db")$? YES 36000002#---------------------------------------------------------------------# Creating three viewports at different locations on the screen.i_return_value = ga_viewport_create("view1",0,0,4,4)dump i_return_valuei_return_value = ga_viewport_create("view2",0,10,8,4)dump i_return_valuei_return_value = ga_viewport_create("view3",10,0,4,7)dump i_return_value#---------------------------------------------------------------------# Session file paused. Press "Resume" to continue..sf_pause()#---------------------------------------------------------------------# Tiling the three views including the "default_viewport".#uil_viewport_tiling.tile()#---------------------------------------------------------------------() |
## Purpose : This file provides an example of a call to the# function ugi_import_iges()## This session file will open a existing database# of name ’plate.db’. The model will be exported# to IGES format file ’plate_IGES.igs.01’. The # same model will be imported in a new database # named ’new.db’ .## Before running this session file run plate.ses# to create plate.db## This file can be run by starting a session of# Patran, and running this session file
# through the "File","Session","Play" pulldown# menus on the menu bar.## The function ugi_import_iges()# has the following arguments:## ugi_import_iges# ( file_name,# group_name,# entity_toggle_values,# color_toggle_values,# color_method,# color_definition,# all_layers,# layer,# number_of_groups,# group_entity_ids,# group_entity_values,# group_color_values,# layer_pointers,# group_layers,# scale,# iges_count,# patran_count )##---------------------------------------------------------------------# Variable DeclarationsSTRING s_file_name[32]STRING s_group_name[32]LOGICAL la_entity_toggle_values(35)LOGICAL la_color_toggle_values(10)STRING s_color_method[7]STRING s_color_definition[8]LOGICAL l_all_layersSTRING s_layer[8]INTEGER i_number_of_groups = 1INTEGER ia_group_entity_ids(2)LOGICAL laa_group_entity_values(20,2)LOGICAL laa_group_color_values(10,2)INTEGER ia_layer_pointers(2)INTEGER ia_group_layers(4)REAL r_scaleINTEGER ia_iges_count(20)INTEGER ia_patran_count(8)INTEGER i_return_valueSTRING s_start_section[64]STRING s_model_units[8]LOGICAL la_entity_values(7)LOGICAL l_all_groups#---------------------------------------------------------------------# Open the database "plate.db"uil_file_open.go("plate.db")#---------------------------------------------------------------------# Exporting all the entities from plate.db file# to ’plate_IGES.igs.01’ file.s_file_name = "plate_IGES.igs"s_start_section = "File created by exporting plate.db"s_model_units = "Inches"la_entity_values = [TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE]l_all_groups = FALSEia_group_entity_ids = [1,0]#i_return_value = @ ugi_export_iges @ ( s_file_name, @ s_start_section, @ s_model_units, @ la_entity_values, @ l_all_groups, @ i_number_of_groups, @ ia_group_entity_ids, @ ia_patran_count, @ ia_iges_count )dump i_return_value# Closing the current database ’plate.db’.uil_file_close.go( )#---------------------------------------------------------------------# Opening a new database by name ’new.db’.uil_file_new.go( "", "new.db" )$? YES 36000002#---------------------------------------------------------------------# Importing all the entities from file ’plate_IGES.igs.01’.s_file_name = "plate_IGES.igs.01"s_group_name = "default_group"s_color_method = "all"l_all_layers = TRUEla_color_toggle_values = [TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, @ TRUE, TRUE, FALSE]la_entity_toggle_values = [TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, @ TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, @ FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, @ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE]#i_return_value = @ ugi_import_iges @ ( s_file_name, @ s_group_name, @ la_entity_toggle_values, @ la_color_toggle_values, @ s_color_method, @ s_color_definition, @ l_all_layers, @ s_layer, @ i_number_of_groups, @ ia_group_entity_ids, @ laa_group_entity_values, @ laa_group_color_values, @ ia_layer_pointers, @ ia_group_layers, @ r_scale, @ ia_iges_count, @ ia_patran_count )dump i_return_value#---------------------------------------------------------------------