Pulsonix User Forum

Technical advice from Pulsonix engineers and the wider community.

Username:
Password:
Save Password
Forgot your Password?

 All Forums
 Help with using Pulsonix
 Scripting
 Unsupported attribute property or method error
Author Previous Topic Topic Next Topic  

SeK

Germany
1 Posts

Posted - 28 Oct 2018 :  19:38:21  Show Profile  Reply with Quote
Hi all,

I created a little script for the automated processing of component attributes. The goal is to loop over all components in a schematic design and check, if there is an attribute with the name "Value". If the value of attribute "Value" has a metric suffix, it should be expanded. For instance, Value=10.2k is expanded to 10200 or 5u is expanded to 0.000005.

Processing of the input data works fine, but I have the problem that the script often aborts with the error

quote:
Object doesn't support this property or method: 'Attr.Value'
.

To reproduce this behaviour I cut down the script to a minimum


' vbs
Set Design = ActiveDocument()
if not Design is Nothing then
  if Design.IsScm() then
  	Set Comps = Design.Components()
    'Test
    for each Comp in Comps
      Set CompPart = Comp.Part      
      Set Attr = CompPart.FindAttribute("Value")
      Message(Comp.Name)
      if Attr.Value = "" then
        Message(Comp.Name & " Value is empty")
      end if
  	next
  else
  	Message("Not a Schematic design")
  end if
end if


and run it within a test design with a few components that all have the attribute "Value". It aborts with

quote:
Object doesn't support this property or method: 'Attr.Value'
Src. Runtime error in Microsoft VBScript
Line11: Error:0 Scode:800a01b6


Replacing 'Attr.Value' with 'Attr.Name' in line 11 shows the same behaviour.

It is striking that the minimum version of my script mostly aborts at the second loop run of 'for each Comp in Comps'. But the original script aborts at a more or less undefined time.

Any ideas?



SeK

Jochen

Germany
8 Posts

Posted - 30 Oct 2018 :  08:41:24  Show Profile  Reply with Quote
Hi SeK,

there are 2 problems with your script:

- You try to get the 'Value' attribute from the underlying Part of a Component. If you added or changed this attribute for a Component in your schematics, this is not reflected by the script.
- If an attribute does not exist in a Pulsonix item, you always get a runtime error. You have to check if your Attr object exists after you try to get it from the database by inserting a check like 'if not Attr is nothing then'.

So the script would look like


' vbs
Set Design = ActiveDocument()
if not Design is Nothing then
  if Design.IsScm() then
  	Set Comps = Design.Components()
    'Test
    for each Comp in Comps
      'Set CompPart = Comp.Part      
      Set Attr = Comp.FindAttribute("Value")
      Message(Comp.Name)
      if Not Attr Is Nothing then
	      if Attr.Value = "" then
	        Message(Comp.Name & " Value is empty")
	      end if
	    end if
  	next
  else
  	Message("Not a Schematic design")
  end if
end if


Hope this helps.

Jochen
Go to Top of Page
  Previous Topic Topic Next Topic  
Jump To: