Question

Intersecting 3d walls

  • 30 March 2016
  • 8 replies
  • 0 views

Hey, I have small problem aggregating touching walls to same file. I have sketchup file where is walls seperated from each other in different files. I want to make all walls what are touching eachother to same file. I managed to get 'id' for each side of wall. So there is 'id' of wall on right side and 'id' of wall on left side. Any idea how I could aggregate these walls to each other with these 'id's efficiently?


8 replies

Userlevel 2
Badge +17

Hi @akituo, means that each wall has three attributes, i.e. left side wall id, self id, right side wall id?

Hi @akituo, means that each wall has three attributes, i.e. left side wall id, self id, right side wall id?

Hi,

Yes, just like that. What I've made in first place was finding from bunch of sketchup files touching elements. Don't know if its possible to make in 3D. But I managed to make it in 2D with 2DForcer and other transformers. With one workbench I made this excel file where is for example these rows:

Wall_ID: "SJK0005"; ID_Left_Right: "SJK0004,SJK0006"

Wall_ID: "SJK0006"; ID_Left_Right: "SJK0005,SJK0007"

Now I would need to connect these files to eachother somehow with second workbench. It sounds so simple task, but just can't figure it now. Don't know if it's just bad day or what. :) It's easy to connect these two walls, but when there comes over 800 walls and there are maybe 100 different buildings what should go to their own file.. Then it comes "funny".

Thank you takashi already from so fast respond and intrest for my case!

Userlevel 2
Badge +17

The ListCombiner (FME Store transformer) might help you.

Create a list containing the 3 ID for each record (e.g. _list{0} =SJK0005 , _list{1} = SJK0004, _list{2} = SJK0006 for the first wall), and then send the records to the ListCombiner (Source List: _list{}).

This transformer will combine all lists which contain common elements with "snowballing", and adds an identical group ID to the features sharing the same combined list. For example, if these 3 features have been input,

  • feature 1 has a list = [1,2,3]
  • feature 2 has a list = [3,4,5]
  • feature 3 has a list = [5,6,7]

the transformer creates a combined list [1,2,3,4,5,6,7] and adds the same group ID to the 3 features. I think you can use the group ID to make wall groups for each building.

Userlevel 2
Badge +17

The ListCombiner (FME Store transformer) might help you.

Create a list containing the 3 ID for each record (e.g. _list{0} =SJK0005 , _list{1} = SJK0004, _list{2} = SJK0006 for the first wall), and then send the records to the ListCombiner (Source List: _list{}).

This transformer will combine all lists which contain common elements with "snowballing", and adds an identical group ID to the features sharing the same combined list. For example, if these 3 features have been input,

  • feature 1 has a list = [1,2,3]
  • feature 2 has a list = [3,4,5]
  • feature 3 has a list = [5,6,7]

the transformer creates a combined list [1,2,3,4,5,6,7] and adds the same group ID to the 3 features. I think you can use the group ID to make wall groups for each building.

oh, the left and right wall ID is a comma separated value. You can use the AttributeSplitter to create a list containing left and right ID. Then, set the resulting list to the "Source List" parameter and set "Wall_ID" to the "Additional Source Attributes" parameter of the ListCombiner. It's a typical use case of the transformer, which I have supposed.

The ListCombiner (FME Store transformer) might help you.

Create a list containing the 3 ID for each record (e.g. _list{0} =SJK0005 , _list{1} = SJK0004, _list{2} = SJK0006 for the first wall), and then send the records to the ListCombiner (Source List: _list{}).

This transformer will combine all lists which contain common elements with "snowballing", and adds an identical group ID to the features sharing the same combined list. For example, if these 3 features have been input,

  • feature 1 has a list = [1,2,3]
  • feature 2 has a list = [3,4,5]
  • feature 3 has a list = [5,6,7]

the transformer creates a combined list [1,2,3,4,5,6,7] and adds the same group ID to the 3 features. I think you can use the group ID to make wall groups for each building.

I will look more on this tomorrow. I got some error code for now. After 'TdCaller' there is no attributes on "__listcombiner.list_attr" for some reason. But thank you for this far. Will come back on this later once I've played little with your transformer.

Thank you once again.

Userlevel 2
Badge +17

I will look more on this tomorrow. I got some error code for now. After 'TdCaller' there is no attributes on "__listcombiner.list_attr" for some reason. But thank you for this far. Will come back on this later once I've played little with your transformer.

Thank you once again.

If you are using FME 2016.0.0, consider upgrading FME to the latest version. The error could be caused by a known bug of 2016.0.0...

The ListCombiner (FME Store transformer) might help you.

Create a list containing the 3 ID for each record (e.g. _list{0} =SJK0005 , _list{1} = SJK0004, _list{2} = SJK0006 for the first wall), and then send the records to the ListCombiner (Source List: _list{}).

This transformer will combine all lists which contain common elements with "snowballing", and adds an identical group ID to the features sharing the same combined list. For example, if these 3 features have been input,

  • feature 1 has a list = [1,2,3]
  • feature 2 has a list = [3,4,5]
  • feature 3 has a list = [5,6,7]

the transformer creates a combined list [1,2,3,4,5,6,7] and adds the same group ID to the 3 features. I think you can use the group ID to make wall groups for each building.

Couldn't handle myself and wait till tmr.. So I manage to get error away.. It works perfectly! Thank you takashi. Needed to make this project for tmr so you just made my day.

If you are using FME 2016.0.0, consider upgrading FME to the latest version. The error could be caused by a known bug of 2016.0.0...

Ah, I gladly had already newest version. Error came from my file naming. Folder containded 'รค' in name what made python give error. After folder name was changed it worked just fine. So just my own mistakes.

Reply