Search code examples
pythonscriptingnameerrorabaqus

How to compare type while scripting in abaqus with python


I'm trying to compare type of abaqus object, but it doesn't work. An idea ?

>>> m = mdb.models['Model-1']
>>> type(m)
<type 'Model'>
>>> type(m) == Model
NameError: name 'Model' is not defined

I want those type of comparison or many other object, not only Model

I tried :

>>> import Model
ImportError: No module named Model
>>> type(m) == mdb.models.Model
AttributeError: 'Repository' object has no attribute 'Model'

Solution

  • It is easy to confirm the Python's built-in data type, because as they are built-in, we don't need to import them. For ex.

    a = []
    type(a) == list  # similar for other built-in python data types
    

    However, Abaqus data types are not built-in. Hence, we must import then from respective modules to compare them. Following is the example for Model and Part data types.

    # importing the modules
    import abaqus as ab  # just for demonstation I'm importing it this way
    import part as prt
    
    # accessing the model and part objects
    myModel = ab.mdb.models['Model-1']
    myPart = myModel.parts['Part-1']
    
    #checking the data types
    type(myModel) == ab.ModelType  # Model is imported from Abaqus module
    type(myPart) == prt.PartType   # Part is imported from Part module
    
    # you can use 'isinstance()' method also
    isinstance(myModel, ab.ModelType)  # Model is imported from Abaqus module
    isinstance(myPart, prt.PartType)   # Part is imported from Part module