|
propertymanager page problem
hello,
i'm working on a macro that gathers information on loops and i need to be able to select several edges with a propertymanager interface. i've got to a certain point where it works, but i can't get the 3,4 selection boxes to allow a selection, and if a selection is made in either 1,2,4,6 - it applies the selection to the other empty boxes. any ideas?
'this class defines the propertymanagerpage and its controls.
option explicit
'the propertymanagerpage
private m_page as sldworks.propertymanagerpage2
'the three groups that will contain the controls
'group1 (settings), group2 (ends), group3 (features)
private m_group1 as sldworks.propertymanagerpagegroup
private m_group2 as sldworks.propertymanagerpagegroup
private m_group3 as sldworks.propertymanagerpagegroup
'the controls on the page
private m_selection1 as sldworks.propertymanagerpageselectionbox
private m_selection2 as sldworks.propertymanagerpageselectionbox
private m_selection3 as sldworks.propertymanagerpageselectionbox
private m_selection4 as sldworks.propertymanagerpageselectionbox
private m_selection5 as sldworks.propertymanagerpageselectionbox
private m_selection6 as sldworks.propertymanagerpageselectionbox
private m_number as sldworks.propertymanagerpagenumberbox
private m_clearselection as sldworks.propertymanagerpagecheckbox
private m_button as sldworks.propertymanagerpagebutton
private m_label1 as sldworks.propertymanagerpagelabel
private m_label2 as sldworks.propertymanagerpagelabel
private m_label3 as sldworks.propertymanagerpagelabel
private m_label4 as sldworks.propertymanagerpagelabel
'whether the second group is active
private m_bgroup3 as boolean
'the id's for all of the controls
const id_group1 as long = 1
const id_group2 as long = 2
const id_group3 as long = 3
const id_selection1 as long = 4
const id_selection2 as long = 5
const id_selection3 as long = 6
const id_selection4 as long = 7
const id_selection5 as long = 8
const id_selection6 as long = 9
const id_number as long = 10
const id_button as long = 11
const id_label1 as long = 12
const id_label2 as long = 13
const id_label3 as long = 14
const id_label4 as long = 15
'required objects
dim clickedcancel as boolean
'create the page and place all of the controls on it.
private sub layout()
dim swapp as sldworks.sldworks
'objects needed to create the propertymanagerpage
dim pagehdlr as new propmgrhdlr
dim swpage as sldworks.propertymanagerpage2
dim swcontrol as sldworks.propertymanagerpagecontrol
dim title as string
dim message as string
dim caption as string
dim tip as string
dim buttontypes as long
dim id as long
dim options as long
dim filterarray(1) as long
dim errors as long
dim controltype as integer
dim alignment as integer
dim bret as boolean
'access solidworks
set swapp = getobject(, "sldworks.application")
'initialize the page handler
'pass it a reference to this propertymanagerpage
pagehdlr.init me
'set some variables for the page
title = "specific geometry selection"
buttontypes = swpropertymanager_okaybutton + swpropertymanager_cancelbutton
'create the propertymanagerpage
set m_page = swapp.createpropertymanagerpage(title, buttontypes, pagehdlr, errors)
'make sure that it was created properly
if errors = swpropertymanagerpage_okay then
'initial set up of the dialog.
message = "please select the id and od curves for the part in order to generate the cl paths."
m_page.setmessage message, swimportantmessagebox
'begin adding the required controls to the dialog.
'group box ----------------
id = id_group1
caption = "output settings"
options = swgroupboxoptions_visible + swgroupboxoptions_expanded
set m_group1 = m_page.addgroupbox(id, caption, options)
if not m_group1 is nothing then
'place these controls in the first group
'control label ------------------
id = id_label1
controltype = swcontroltype_label
caption = "tesselation chord length"
alignment = swcontrolalign_indent
options = swcontroloptions_visible + swcontroloptions_enabled
tip = "tesselation chord length"
set swcontrol = m_group1.addcontrol(id, controltype, caption, alignment, options, tip)
if not swcontrol is nothing then
set m_label1 = swcontrol
end if
'control number box ----------------
id = id_number
controltype = swcontroltype_numberbox
caption = "tess chord length"
alignment = swcontrolalign_indent
options = swcontroloptions_visible + swcontroloptions_enabled
tip = "tess chord length"
set swcontrol = m_group1.addcontrol(id, controltype, caption, alignment, options, tip)
if not swcontrol is nothing then
set m_number = swcontrol
m_number.setrange swnumberbox_length, -1000#, 1000#, 0.0001, true
m_number.value = 0.001
end if
end if
'group box ----------------
id = id_group2
caption = "end selection"
options = swgroupboxoptions_visible + swgroupboxoptions_expanded
set m_group2 = m_page.addgroupbox(id, caption, options)
if not m_group2 is nothing then
'place these controls in the second group
'control label ------------------
id = id_label2
controltype = swcontroltype_label
caption = "end 1"
alignment = swcontrolalign_indent
options = swcontroloptions_visible + swcontroloptions_enabled
tip = "label"
set swcontrol = m_group2.addcontrol(id, controltype, caption, alignment, options, tip)
if not swcontrol is nothing then
set m_label2 = swcontrol
end if
'control selection box ----------------
id = id_selection1
controltype = swcontroltype_selectionbox
caption = "end 1 id"
alignment = swcontrolalign_indent
options = swcontroloptions_visible + swcontroloptions_enabled
tip = "select id"
set swcontrol = m_group2.addcontrol(id, controltype, caption, alignment, options, tip)
if not swcontrol is nothing then
set m_selection1 = swcontrol
filterarray(0) = swseledges
filterarray(1) = swselrefcurves
'm_selection1.setselectionfilters (filterarray)
m_selection1.singleentityonly = true
m_selection1.mark = 1
end if
'control selection box ----------------
id = id_selection2
controltype = swcontroltype_selectionbox
caption = "end 1 od"
alignment = swcontrolalign_indent
options = swcontroloptions_visible + swcontroloptions_enabled + swcontroloptions_smallgapabove
tip = "select od"
set swcontrol = m_group2.addcontrol(id, controltype, caption, alignment, options, tip)
if not swcontrol is nothing then
set m_selection2 = swcontrol
filterarray(0) = swseledges
filterarray(1) = swselrefcurves
m_selection2.setselectionfilters (filterarray)
m_selection2.singleentityonly = true
m_selection2.mark = 2
end if
'control label ------------------
id = id_label3
controltype = swcontroltype_label
caption = "end 2"
alignment = swcontrolalign_indent
options = swcontroloptions_visible + swcontroloptions_enabled
tip = "label"
set swcontrol = m_group2.addcontrol(id, controltype, caption, alignment, options, tip)
if not swcontrol is nothing then
set m_label3 = swcontrol
end if
'control selection box ----------------
id = id_selection3
controltype = swcontroltype_selectionbox
caption = "end 2 id"
alignment = swcontrolalign_indent
options = swcontroloptions_visible + swcontroloptions_enabled
tip = "select faces and vertices"
set swcontrol = m_group2.addcontrol(id, controltype, caption, alignment, options, tip)
if not swcontrol is nothing then
set m_selection3 = swcontrol
filterarray(0) = swseledges
filterarray(1) = swselrefcurves
m_selection3.setselectionfilters (filterarray)
m_selection3.singleentityonly = true
m_selection3.mark = 4
end if
'control selection box ----------------
id = id_selection4
controltype = swcontroltype_selectionbox
caption = "end 2 od"
alignment = swcontrolalign_indent
options = swcontroloptions_visible + swcontroloptions_enabled + swcontroloptions_smallgapabove
tip = "select faces and vertices"
set swcontrol = m_group2.addcontrol(id, controltype, caption, alignment, options, tip)
if not swcontrol is nothing then
set m_selection4 = swcontrol
filterarray(0) = swseledges
filterarray(1) = swselrefcurves
m_selection4.setselectionfilters (filterarray)
m_selection4.singleentityonly = true
m_selection4.mark = 8
end if
end if
'group box ----------------
id = id_group3
caption = "feature selection"
options = swgroupboxoptions_visible + swgroupboxoptions_checkbox '+ swgroupboxoptions_expanded + swgroupboxoptions_checked
m_bgroup3 = false 'mark that the second group is disabled.
set m_group3 = m_page.addgroupbox(id, caption, options)
if not m_group3 is nothing then
'place these controls in the second group
'control label ------------------
id = id_label4
controltype = swcontroltype_label
caption = "feature selection"
alignment = swcontrolalign_indent
options = swcontroloptions_visible + swcontroloptions_enabled
tip = "label"
set swcontrol = m_group3.addcontrol(id, controltype, caption, alignment, options, tip)
if not swcontrol is nothing then
set m_label4 = swcontrol
end if
'control selection box ----------------
id = id_selection5
controltype = swcontroltype_selectionbox
caption = "sample selection box"
alignment = swcontrolalign_indent
options = swcontroloptions_visible + swcontroloptions_enabled
tip = "select faces and vertices"
set swcontrol = m_group3.addcontrol(id, controltype, caption, alignment, options, tip)
if not swcontrol is nothing then
set m_selection5 = swcontrol
filterarray(0) = swseledges
filterarray(1) = swselrefcurves
m_selection5.setselectionfilters (filterarray)
m_selection5.singleentityonly = true
'm_selection5.mark = 5
end if
'control selection box ----------------
id = id_selection6
controltype = swcontroltype_selectionbox
caption = "sample selection box"
alignment = swcontrolalign_indent
options = swcontroloptions_visible + swcontroloptions_enabled + swcontroloptions_smallgapabove
tip = "select faces and vertices"
set swcontrol = m_group3.addcontrol(id, controltype, caption, alignment, options, tip)
if not swcontrol is nothing then
set m_selection6 = swcontrol
filterarray(0) = swseledges
filterarray(1) = swselrefcurves
m_selection6.setselectionfilters (filterarray)
m_selection6.singleentityonly = true
'm_selection6.mark = 6
end if
end if
else
swapp.sendmsgtouser2 "there was an error creating the property manager page", swmbinformation, swmbok
end if
end sub
'display the property manager page
public sub show()
dim nretval as long
nretval = m_page.show
end sub
'generate the propertymanagerpage and it's controls
private sub class_initialize()
layout
end sub
private sub class_terminate()
'
end sub
your problem is you have not set the id to id_selection1 for the first box, so add that line. secondly you need to set the filter for selection and you have commented this out for selection 1 also. uncomment out the set filter line and the rest works fine.
hey luke, thanks for that. i was trying to debug it within the sw vba and for some reason it was not working properly. running it from solidworks made everything work fine.
quick |
|