Jump to content

Marionette or Script Help - Quick Way to Change Attributes of Objects inside Plant Symbols in a Drawing


Recommended Posts

I have over 1000 different plant symbols in a drawing. The 2D components of these symbols are all very basic circles with black outlines and different color fills...that's it. One object...a circle.

 

Since I stupidly did not Make All Attributes By Class when I created these symbols originally, I am now trying to find a fast way of changing the pen color of every single plant object in the drawing without having to change them each individually.

 

This seems like something for either marionette or a custom script. Can someone please advise? I would love the help.

 

Thanks. 

Link to comment

Do you want them to be set as ByClass? Or do you just want to manually change them all to something other than black?

 

Do you have other symbols in the drawing that you don't want to change? Is there something about these plant symbols (Name, attached record, all in a single symbol folder, etc.) that could be used to identify these plant symbols versus other symbols in the drawing?

 

If we can identify the symbols it is a pretty simple script to make the change.

Link to comment
40 minutes ago, Pat Stanford said:

Do you want them to be set as ByClass? Or do you just want to manually change them all to something other than black?

 

No, not by class, just another color.

 

40 minutes ago, Pat Stanford said:

Do you have other symbols in the drawing that you don't want to change?

 

Nope, no other symbols. This is a library file I am just trying to clean up.

 

Thanks for the quick reply!

Link to comment

Try this. Just change the values for the RGB in the SetPenFore line to the color you need.

 

Procedure Change_Pen_Color;

Var	H1:Handle;
	N1:Integer;


Procedure Process(Hd:Handle);
Begin
	SetPenFore(FInSymDef(Hd),000,65000,000);
	N1:=N1+1;
End;



Begin
	N1:=0;
	H1:=FSymDef;
	While H1<>Nil do
		Begin
			Process(H1);
			H1:=NextSymDef(H1);
		End;
	RedrawAll;
	Message(Date(2,2),' ',N1,' Symbol Definitions Processed');
End;

Run(Change_Pen_Color);

 

Link to comment

Eric, Eric, Eric,

 

It doesn't work because you lied to me ;-)

 

You said it was a symbol with a single circle. It is not. It is a hybrid symbol with a Plant object in the profile group.  The symbol that is used for the plant consists of a circle plus 2 crossed lines. And the symbols are all in symbol folders.

 

Also, the RGB of the magenta color is 65535, 0, 65535.  65535,65535,65535 is solid white. 0,0,0 is solid black.

 

I will see what I can do to update the script tomorrow or Thursday.

Link to comment

OK. Try this.  On the 60 symbol sample file it takes about 10 seconds to run on my machine, so be patient when running on a big file.

 

I had to use a resource list to be able to handle symbols inside symbol folders.

 

Procedure Process_Resource_List;
{January 10, 2018}
{© 2018, Pat Stanford pat@coviana.com}
{Licensed under the GNU Lesser General Public License}

{Uses a Resource List to process every symbol definition in a file to change the pen fore color}
{Change the RGB values in the SetPenFore line as appropriate}

Var	H1:Handle;
	N1,N2:Integer;
	S1,S2:String;
	L1,L2,RList:LongINt;


Procedure Process(Hd:Handle);
Var Hd1,Hd2,Hd3,Hd4:Handle;
Begin
	Hd4:=FInSymDef(Hd);
	Hd3:=GetCustomObjectProfileGroup(Hd4);
	Hd2:=FInGroup(Hd3);
	Hd1:=FInGroup(Hd2);
	SetPenFore(Hd1,65535,000,65535);
	ResetObject(Hd1);
	ResetObject(Hd2);
	ResetObject(Hd3);
	ResetObject(Hd4);
	ResetObject(Hd);
	ResetBBox(Hd);
	N1:=N1+1;
End;



Begin
	N1:=0;

	RList:=BuildResourceList(16,0,'',L1);
	L2:=1;
	While L2 <= L1 do
		Begin
			H1:=GetResourceFromList(RList,L2);
			Process(H1);
			L2:=L2+1;
		End;
		
	RedrawAll;
	Message(Date(1,2),' ',N1,' Symbol Definitions Processed');
End;

Run(Process_Resource_List);

 

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...