Jump to content

Exploding styled Landscape Areas?


Recommended Posts

Wondering how to explode a landscape area to manually adjust/edit the plant layout.

 

  • Make a 'styled' landscape area.
  • Ungroup  ("are you sure you want to ungroup a high level object")
  • Resulting symbols are not "Plant " symbols, but just 2d/3d symbols with plant names.

 

Am I doing something wrong to extract the plant symbols from a landscape area?

 

 

I also tried to select and replace the resulting symbols but VW doesn't seem to give me plant symbol options...

 

edit to say VWL2021

 

 

Edited by hollister design Studio
Link to comment
  • Vectorworks, Inc Employee

Sure, With 2D plants visible as an option in the landscape style, Ungroup it. It will no longer be a landscape area but you can adjust the plants.

Why would you want this? If you want specific plant placement wouldn't you place them as you wanted using the plant tool? This is really intended to be used for general random are placement not specific placement. But you could ungroup as stated and move them where you like.

Link to comment

When I ungroup the individual plants become 2D/3D symbols

 

Example

made a landscape area---

copied it and ungrouped the copy---

moved a hydrangea out form the group to isolate--

It's a 2D/3D symbol:

426884538_explodelandscapearea1.thumb.jpg.bd8b23c22f794e12b8154e408315ac79.jpg

 

not a 'Plant' symbol as inserted with the plant tool:

1802535131_explodelandscapearea2.thumb.jpg.ef5a50d1f0053fc9921bb00600470caa.jpg

 

 

As for why, it seemed to have potential for quasi randomized massings with hero plants added at specific locations.

Hitting randomize and then adjusting that instance could save hours for our small studio in less important planting beds.

I'm specifically thinking of large meadow plantings.

Will most likely drop the idea as it doesn't seem to work

  • Like 3
Link to comment
1 hour ago, hollister design Studio said:

As for why, it seemed to have potential for quasi randomized massings with hero plants added at specific locations.

Hitting randomize and then adjusting that instance could save hours for our small studio in less important planting beds.

I'm specifically thinking of large meadow plantings.

Will most likely drop the idea as it doesn't seem to work

 

I think there is a lot of potential utility in the point you are making.  Using a landscape area to quickly drop in a predetermined ratio of plants allows for rapid generation of plant symbols while meeting technical design requirements for plant density, etc.  Having the fine control over placement by ungrouping them into individuals, or some method of manual control within a Landscape Area, would save a lot of time.  Sounds like a great feature request that I would vote for, maybe even justify upgrading for 🙂

  • Like 3
Link to comment
17 hours ago, hollister design Studio said:

When I ungroup the individual plants become 2D/3D symbols

 

Example

made a landscape area---

copied it and ungrouped the copy---

moved a hydrangea out form the group to isolate--

It's a 2D/3D symbol:

426884538_explodelandscapearea1.thumb.jpg.bd8b23c22f794e12b8154e408315ac79.jpg

 

not a 'Plant' symbol as inserted with the plant tool:

1802535131_explodelandscapearea2.thumb.jpg.ef5a50d1f0053fc9921bb00600470caa.jpg

 

 

As for why, it seemed to have potential for quasi randomized massings with hero plants added at specific locations.

Hitting randomize and then adjusting that instance could save hours for our small studio in less important planting beds.

I'm specifically thinking of large meadow plantings.

Will most likely drop the idea as it doesn't seem to work

Didn't try it, but do the following procedure :

 

1.Landscape area

2. Ungroup (Crtl + U) 

3. Select them and Ctrl + K

 

You should get the plant objects isolated. 

If you want to group them in a single plant object, select with select similar and change plant grouping (right click on the mouse). 

 

Give it a try and I'll try it when I can as well

Edited by jpccrodrigues
Link to comment
  • Vectorworks, Inc Employee

So I understand. You want to use a Landscape Area to populate the bulk of the plants in an area but would like to "add" hero or unique plants in a specific location?

If that is correct create your own landscape area for the desired base mix of plants and manually add the unique plants over the top using the plant tool. I have done this on thousands of acres of native and bee pollinator gardens. Generate the base mix and then in pockets add plants. If you would like to clip out the areas of the unique plantings vs adding on top of then generate the shape (circle, square, poly line) over the top of the Landscape area and clip surface. Then add in the plants you need. this keeps the Landscape area as a Landscape area.

  • Like 2
Link to comment

@hollister design Studio  I don't think you're doing anything wrong.  I've been having the same problem when exploding landscape areas with v2021 and old versions.  I also don't like how the Plant object turn into plain 2d/3d symbols.  I guess it's not a dealbreaker for me, but I would still find it helpful to maintain them as plant objects.  I tried out the method @jpccrodrigues suggested, but it doesn't work because the object are no longer plants once you ungroup.  I would like to be able to keep them as Plant objects, especially when 3d modeling.  Landscape Areas are a quick way to propagate an area with a mix of 3d plants, but often a 3d plant will show up in the landscape area where you don't want it to be (such as a large shrub right on the edge of a walkway where you might want it further back).  But once you ungroup, there's no going back and all the functionality of plant objects are gone... such as changing spacing, size variation, etc.      

Edited by loretta.at.large
  • Like 4
Link to comment
  • Vectorworks, Inc Employee

@jpccrodrigues I looked at your file. Just out of curiosity. Why would you not just make the groudcover a Landscape area and manually placece the three trees using the plant tool. I know this is an example but there are a lot of extra steps to achieve a supposed automated response as you want while I can plant it using the plant tool only faster.

 

Just saying!😉

Link to comment
  • Vectorworks, Inc Employee

I recognize that however the intent of the Landscape Area is to generate a plant count based on area parameters for rapid generation in large areas. Not for true placement. This would be a good addition however the process of using the Landscape area and the destroying it tends to negate the primary function and future use of the area. For the primary of what you are saying though I have used this on thousands of acres and "added" to the mix over the top. The need to modify the placement has some use and I will pass this along in development meetings.

  • Like 1
Link to comment

@bgoff I think this notion of using a landscape area to rapidly generate a mix of plants and then "destroying" the landscape area functionality in order to finely control placement and editing has HUGE utility for many of us.  It's an alternative use case, but would be a wonderful capability.  We can always copy a landscape area and leave it intact for the purpose of being a landscape area when required.

  • Like 2
Link to comment
  • Vectorworks, Inc Employee

@jeff prince I totally agree this would be a great addition, thus my post to discuss in development for future use and production. It does however take time to develop and work around the various technology internally to achieve what is needed. This is why it is important to understand that we will note this and hopefully develop the tool to work further as people now would like, but it does take time. I just wanted to reiterate the original intent of the tool and the present functionality of it. and now that people have developed other workarounds and requests for the tool we will compile them and go back to work.

And for all of you commenting and requesting! Thank you for the dialog, it works wonders for us to understand the needs and improve the tools. 

 

Thanks again.

  • Like 3
Link to comment

@bgoff  Thanks for looking into it.  I've always used the Landscape Area tool just for getting quick plant quantities in the past (without having to do a detailed plan with individual plants).  I think the new feature of being able to check a box that says "Show Plants 2D" got me more interested in other possibilities.  When you check that box, I find the randomness to be both good and bad.  It's saves me time from having to click a mixture of plants around to make it look "random" or "natural" in a large bed (especially in a 3d model).  But then there's that small part of me that wishes I had a LITTLE bit of control over where certain plants go.  But I suppose that's me wanting to have my cake and eat it too!    🍰🍴

Screen Shot 2020-12-11 at 1.02.52 PM.png

Screen Shot 2020-12-11 at 1.02.40 PM.png

  • Like 2
Link to comment
1 hour ago, bgoff said:

...And for all of you commenting and requesting! Thank you for the dialog, it works wonders for us to understand the needs and improve the tools...

I'm so glad I wasn't alone in thinking this could be a useful addition to the tool set.

 

...plus now I won't think that I was just doing something wrong or misunderstanding the process!

 

  • Like 1
Link to comment

I don't know if I am supporting or disputing @bgoff but here is a script that "kind of" extracts plants from a landscape area.

 

I am supporting him in that this script needed 150 lines of code with almost no error checking and with results that are not perfect to get the plants out of the LSA. A version that would meet VW quality standards would be at least a couple of thousands of lines of code and a lot more QC than the two simple LSA's I tried this on.

 

I am disputing him in that I was able to write a script to get the data I got out with only a few hours of coding and no previous knowledge of the internal structure of LSAs.

 

In any case, the script is here. I am willing to put a little more work into it if the group thinks it is useful. I will need you to act as beta testers for me. I am especially interested to know what settings from the Plant PIO defaults should be changed. In my testing, I think that the plants in the LSA do not have any Tick Style and have the Mass Outline set to None even though the plants I chose have those options turned on. I you notice other options like that that should be turned off when the new plants are created, or things that should be turned on when new plants are created, let me know.

 

This script takes a single selected Landscape Area on the active layer and creates a copy of all the plants in the LSA as a group on top of the LSA. At the end of the script, the new plant group is selected and the LSA is deselected.

 

In the Resource Manager create a new VectorScript and paste everything in the code block below into that script. From the Script Palette, double click on the script name to run the script.

 

HTH.

 

Procedure DuplicateLandscapeAreaToPlants;

{December 13, 2020}
{©2020 Patrick Stanford pat@coviana.com}
{Licensed under the GNU Lesser General Public License}

{No Warranty Expressed of Implied. Use at your own risk.}

{A Vectorworks Landscape Area can not readily be converted to a group of individual plants}
{This script attempts to overcome that.}

{Inside a Landscapre Area object are two groups (and other components). The first group contains one}
{instance of each type of plant in the mix of objects in the LSA. The second group contains}
{individual symbols extracted from the plant objects for each plant in the plant group.}
{This script uses the symbols in the first list to find the original plant objects in the Resource}
{Manager. It then creates a new plant object for each of the plants in the second group and}
{copies the Parameter Record from the PIO in the Resource Manager to the new plant object.}
{It then overrides a couple of parameters such as Tag Type that should not be on for objects in a}
{landscape area plant, but might be on in the master PIO Parameter Record.}

{The script only handles planting mixtures of up to 99 plant types.}

{Use at your own risk. Very lightly testing. Backup everything before using this script.}
{Here be monsters.}

Type
	PS=Structure {Structure to allow lookup of "sample" symbols in the Landscape Area [LSA]}
		ID :String; {plant ID}
		PD :STRING; {Plant Description} 
		Num :Integer; {locator for record}
		Hd :Handle; {Handle to the "sample" symbol in the Landscape Area}
	End;

Var	
	H_L1		:Handle; {Handle to an object in the LSA}
	H_G1		:Handle; {Handle to an object in the first group in the LSA}
	H_P1		:Handle; {Handle to the plant object currently being created}
	H_S1		:Handle; {Handle to the "Sample" symbol. Stored in the Structure}
	SymName		:String; {Symbol Name of the placed symbol in the LSA}
	N1,N2,N3,N4,N5:Integer;
	X1,Y1,X2,Y2: Real;
	B1:Boolean;
	A1:Array[0..99] of PS; {Array of structure to hold the data on the "sample" symbols}
	
	
	{*********************************************}
	{This sub procedure replaces all of the values}
	{in the parameter record of the second object }
	{passed with the values of the parameter      }
	{record of the first object passed. It them   }
	{overrides values as necessary.               }
	{Hd1 is a handle to the "sample" symbol that  }
	{matches with the placed symbol in Hd2.       }
	Procedure ReplaceRecordValues(Hd1, Hd2:Handle);
	
	Var	Num1		:Integer;	{Counter to loop once through all the fields}
	{	Str1		:String;	}
		Rec, Fld	:String;	{Strings to hold the record name and field name}
		Hd3			:Handle;	{Handle to the Parmetric record of the PIO in the Symbol}
								{Definition in the Resource Manager.}
	Begin
		Num1:=1;						{Start at the first field}
		Hd3:=GetParametricRecord(Hd1);	{Get the handle to the Parameter Record}
		Rec:=GetName(Hd3);				{Get the name of the Parameter Record}
		
		While Num1<NumFields(Hd3) do	{loop through all the fields in the Parameter Record}
			Begin
				Fld:=GetFldName(Hd3,Num1);  {Get the current Field name}
				SetRField(Hd2,Rec,Fld,GetRField(Hd1,Rec,Fld));  {Set the field value in Hd2 object}
																{To the value in Hd1}
				Num1:=Num1+1;    {go to the next field}
			End;
		{Lines after this separator are "manual" overrides for fields}
		{that you don't want the PIO defaults for.}
		SetRField(Hd2,Rec,'tag display','None');
	End;
			
Begin
	PushAttrs;
	ProgressDlgOpen('Creating Plants from Landscape Area',False);
	ProgressDlgStart(10,10);
	H_L1:=FInGroup(FSActLayer); {Handle to the first object in the LSA}
	H_G1:=FInGroup(H_L1); 		{Handle to the first object in the first group ["sample" symbols']}
	N1:=1;						{Start Counter at 1}

	{This block sets up the Structure with data on all the quote "sample" symbols and what PIO}
	{in the Resource Manager they relate to.}
	While H_G1<>Nil do			{Repeat as long as there are more objects in hte "sample" group}
		Begin
			H_S1:=FinSymDef(GetObject(GetSymName(H_G1)));				{Get the handle to the PIO}
																	{In the Symbol Definition}
																	{In the Resource Manager}
			A1[N1].ID:=GetRField(H_S1,'Plant','plant ID');			{Store the plant ID to the struct}
			A1[N1].PD:=GetRField(H_S1,'Plant','PlantDescription');	{Store the PlantDescription}
			A1[N1].Num:=N1;											{Store the couunter to access}
																	{the data later}
			A1[N1].Hd:=H_S1;										{Store the Handle to the PIO}
			N1:=N1+1;												{Increment the counter}
			H_G1:=NextObj(H_G1);									{Go to the next object}
		End;

	{This block Creates a new Plant object at the location of each of the plants in the LSA}
	{and updates the parameter record to match the data from the PIO definition in the }
	{Resource Manager.}
	GetSymLoc(FSActLayer,X1,Y1); 									{Get the "Insertion Point"}
																	{of the LSA to use as an }
																	{Offset for placing the new}
																	{plants. Plant locations }
																	{inside the LSA are relative}
																	{to this location.}
	SetDSelect(FSActLayer);											{Deselect the LSA}
	N2:=1;															{Counter for Progress message}
	BeginGroup;														{Start a group to hold new plants}
	While H_L1 <> Nil do											{Repeat for each object in LSA}
		Begin
			If GetTypeN(H_L1)=15 then								{Only process Symbols}
				Begin
					GetSymLoc(H_L1,X2,Y2);							{Get relative location of symbol}
					SymName:=GetSymName(H_L1);						{Get Name of symbol.}
					N3:=1;											{counter starts at one.}
					While N3<=99 do									{make sure we don't go past end}
																	{of the structure array.}
						Begin	
							If SymName=A1[N3].PD then N4:=N3;		{find which entry in the array}
																	{matches the symbol name and }
																	{store that index in N4.}
							N3:=N3+1;								{increment to check next object.}
						End;
					N2:=N1+1;										{increment progress message ctr}
					ProgressDlgSetTopMsg(Concat('Processed Plant: ',N2));
					H_P1:=CreateCustomObject('Plant',X1+X2,Y1+Y2,0);  {Create new plant}
					ReplaceRecordValues(A1[N4].Hd, H_P1);			{Call Procedure to change }
																	{parameter record values so the}
																	{plant matches the one in the}
																	{LSA.}
					H_L1:=NextObj(H_L1);							{Go to the next plant in the}
																	{LSA.}
				End
			Else H_L1:=NextObj(H_L1);								{if the object was not a symbol}
																	{go to the next obect in the LSA}
		End;
	EndGroup;														{Complete the group after all }
																	{symbols have been processed.}
	ProgressDlgClose;
	PopAttrs;
End;

Run(DuplicateLandscapeAreaToPlants);								{code to run the script.}

 

  • Like 4
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...