Hello @traiduong014969,
I have attached some example files for testing.
There is an image showing the parameters in the Catalog Editor.

There is a sample dwg showing the three different options for the valves
Then two python scripts. TestValve.py passes in the parameters from the spec. test_valve_modeler.py does the work. In this example, there is only one parameter TAG, it accepts 3 values; 1, 2, or 3. Each TAG will draw a different sized valve, but it could be any number of changes. This is a simple example with only one parameter, but if you pass in more parameters, its easier to pass them in as an array.
def TestValve(s, TAG= 1, **kw):
spec_params = {'s': s, 'TAG': TAG, 'specKw': kw}
valve = Test_Valve_Modeler(spec_params, **kw)
valve.build_model()
This parameter gets passed into a modeler file where the other parameters are found. Currently they are hard coded, but you could get these values from an external source if needed.
# Check Tag and get these parameters from an outside source, Excel, JSON, ...
if self.tag == 1:
part_params = {'D': 8.625, 'L': 15.0, 'H': 8.625}
elif self.tag == 2:
part_params = {'D': 10.625, 'L': 25.0, 'H': 10.625}
elif self.tag == 3:
part_params = {'D': 12.0, 'L': 36.0, 'H': 12.0}
Hopefully this provides a bit more information on how to hide some parameters in the catalog and properties palette.
NOTE: This does not need to be created in a class or separate files. Its just how I break my code apart for easier reading and debugging.
Let me know if you have any questions.
If my reply was helpful, please give a "Thumbs Up" or "Accept as Solution"