You can use settings and selections with scripting before starting the database generation using respectively the following methods from the model: UseSettings(ByVal Function As Long, ByVal Name As String = "") As Boolean and UseSelection(ByVal Function As Long, ByVal Name As String = "") As Boolean.
Given the PDM sample (Project.PDM) in the PowerDesigner installation folder, which contains two selections:
The following example shows you how to
Generate a first script of this model for the "Organization" selection using first setting (setting1)
Generate a test data creation script for the tables contained in this selection.
Generate a second script of this model for the "Materials" selection and a test data creation script for the tables it contains using second setting (setting2).
Example:
' Generated sql scripts will be created in 'GenDir' directory
' there names is the name of the used selection with extension ".sql" for DDL scripts
' and extension "_td.sql" for DML scripts (for test data generations).
Option Explicit
Const GenDir = "D:\temp\test\"
Const setting1 = "Tables & Views (with permissions)"
Const setting2 = "Triggers & Procedures (with permissions)"
Start EvaluateNamedPath("%_EXAMPLES%\project.pdm")
Sub Start(sModelPath)
 on error resume next
 dim pModel : Set pModel = OpenModel(sModelPath)
 If (pModel is Nothing) then
  Output "Unable to open model " & sModelPath
  Exit Sub
 End if
 GenerateDatabaseScripts pModel, "Organization" setting1
 GenerateTestDataScript pModel, "Organization" setting1
 GenerateDatabaseScripts pModel, "Materials" setting2
 GenerateTestDataScript pModel, "Materials" setting2
 pModel.Close
 on error goto 0
End Sub
Sub GenerateDatabaseScripts(pModel, sSelectionName, sSettingName)
 Dim pOpts : Set pOpts = pModel.GetPackageOptions()
 InteractiveMode = im_Batch ' Avoid displaying generate window
' set generation options using model package options
 pOpts.GenerateODBC = False ' Force sql script generation rather than ODBC
 pOpts.GenerationPathName = GenDir
 pOpts.GenerationScriptName = sSelectionName & ".sql"
 ' Launch the Generate Database feature with selected objects
 pModel.UseSelection fct_DatabaseGeneration, sSelectionName
 pModel.UseSetting fct_DatabaseGeneration, sSettingName
 pModel.GenerateDatabase
End Sub
Sub GenerateTestDataScript(pModel, sSelectionName)
 Dim pOpts : Set pOpts = pModel.GetPackageOptions()
 InteractiveMode = im_Batch ' Avoid displaying generate window
 ' set generation options using model package options
 pOpts.TestDataGenerationByODBC = False ' Force sql script generation rather than ODBC
 pOpts.TestDataGenerationDeleteOldData = False
 pOpts.TestDataGenerationPathName = GenDir
 pOpts.TestDataGenerationScriptName = sSelectionName & "_td.sql"
' Launch the Generate Test Data feature for selected objects
 pModel.UseSelection fct_TestDataGeneration, sSelectionName
 pModel.GenerateTestData 
End Sub
        You can create a persistent selection that can be used in database generation by transforming a selection into a persistent selection..
Example:
Option Explicit
 Dim pActiveModel
 Set pActiveModel = ActiveModel
 Dim Selection, PrstSel
 Set Selection = pActiveModel.createselection
 Selection.AddActiveSelectionObjects
 Set PrstSel = Selection.CreatePersistentSelectionManager("test")