Hi. I am totally new to Dynamo and have been watching a bunch of how to videos. For my company, I am trying to find a way to do the following:
Insert a block (House Pad) in the middle (centroid) of all parcels in a site. We would prefer to have this automatically rotated toward the frontage of the parcel.
Now, optimally it would be great if we could have it rotated and place at a user defined distance (front setback) from that frontage, but we are fine with just getting the block in the center, if easier. Besides the dynamo aspect of it all, do I need to make sure my block is set up a specific way so it know where the front is on the block? Would it just be making sure the insert point is at the front center of the house pad and maybe add a rotation parameter from there towards the front of the pad?
To simplify, this is what we were thinking ofā¦not sure if its the best workflow:
1.) Insert Block (user input-block name) to Centroid of all parcels of a specific style (user input).
2.) Rotate Block to be perpendicular with: Parcel Frontage? or R/W layer (user input)?
3.) Move block to specific distance (user input) from R/W layerā¦i.e. front setback distance.
Unfortunately, I have no idea how to begin in Dynamo. Any help/tips would be appreciated.
I always recommend starting automation development by building a āmapā of your logic and steps - best part about this is you donāt need any dynamo to do it which means you already know everything you need to. Now I donāt have a data set and know nothing of how your firm operates, but this steps below might make a good sequence for you to build out, and at a minimum can help you build your own map.
Get all road alignment curves
Offset the road alignment curves by (+ 1/2 of the roadway width + any parcel setback distance) and (- 1/2 of the roadway width - any parcel setback distance).
Loft between the offset
Curves to build a surface representing the road surface,
Union the road surfaces into one.
Extract the plot boundaries
Check each boundary curve for intersection with the expanded road surface and discard any which donāt intersect the road.
Get the longest of the remaining line segments
Find the coordinate system at parameter 0.5
Move the coordinate system along its X axis by the desired offset distance.
Create a block reference at the coordinate system.
Thanks for the help. I think initially we are going to focus on getting the blocks insert onto all parcels and hopefully work out the rotation issue and not worry about setting it a specific distance for setbacks yet. Attached is what I have so far. This works as far as inserting a block onto all parcels at the label point. But I do not know what to do about the rotation.
We donāt always have alignments or corridors done at the time of wanting to show building pads. We do have specific layer names for the R/W, lot lines, centerlines and curbing. And I would think the parcels themselves have āfrontageā data based on how the were created. If possible, how do you go about setting a blocks rotating based on being perpendicular between the parcel label and the closest R/W line? Or is there a better way to do that?
Also, in the Site.Parcels box, it grabs all parcels in the site. Is there a way to select certain Parcel Styles within the site to filter that down further than grabbing all parcels? I see they list the Parcel data as Parcel (Name= āParcel Style Nameāā¦etc) So I do you create an input similar to the Choose Site Name, but would be Choose Parcel Style?
The specific setup of your drawing will matter quite a bit here. In particular if your āedge of concā lines arenāt closed curves; or if they have inconsistent Z heights; or if other info about them changes youāre potentially in trouble getting this to work. Moving drawing those as curves to utilization of alignments would help.
Geometry in Dynamo should look like this for the file provided.
@jacob.small I was able to get it working on that first test file, but I am having a rotation problem with this specific block (GEC-Dyn_Pad). See attached files. The block seems to be rotated 90 degrees form where I would want it. I tried it with a turn-arrow block as well and same issue. What would I need to change to correct this?
Also, I tried the same a couple of other test files and they are throwing up errors. What can I do to make sure other files work? Is it a linework issue?
Also, I canāt find the New Block References/Review the results at the end of your graph. DO you know where to find that to add to mine?
Here are the test files I have been using and the updated graph.
After you confirm the Z axis alignment, rotate the coordinate system on the XY plane by 90 degrees (or -90 depending how your stuff is set up). Layout should look like the Z axis alignment bit.
Depends on the error - copy the text and we can review, but generally youāll have to learn a bit Dynamo to manage such issues.
This was a renamed āwatchā node set as an output.
I altered and added a couple things to get the block to rotate, but with no luck. Iām really not sure where to add it and where to get all the parameters from. Also tried adding a rotate object at the end of it all with no luck.
Iām getting different errors with different files. Some say Dereferencing a non-pointer, another says:Surface.TrimWithEdgeLoops operation failed. Failed to trim surface with polycurve loops. : FACE_SELF_INTER ā self-intersecting face
All the files have been audited and purged. Iāve used overkill and mapclean to make sure the linework was good and not overlapping. I joined everything and made it closed then exploded, but no luck on other files.
First error is something failing to return results, usually in the previous node. Second is possibly a geometry scaling error, or a poorly constructed set of curves for the public way. Canāt tell which, but the curve set should be really identifiable in CAD - isolate the layer, try to build a polyp e, etc.
Iām not sure what I should be looking for in the curve set. If you are just talking about the edge of asphalt linework, it is clean as far as I can see. They are all LW Polylines. I ran mapclean on them, as well as overkill. Joined them all as a closed polyline and re-expoded as well. None have elevations associated with them and all are parallel the UCS. All these drawings were set up in the same company template as well and no changes were made to any default coordinate systems. Is there something else I should look for?
When a node fails, you need to look at the data which is fed into it.
So on the error List.FirstItem operation failed. Index of out of range. you need to expand the data preview of the List.FilterByBoolMask node or insert a āwatchā node to see what is returned by the āinā output. My guess is Geometry.DoesIntersect node failed to find a single intersection.
On the error Surface.TrimWithEdgeLoops operation failed. Failed to trim wsurface with polycurve loops : face self intersection itās telling you that one of the trimming elements is causing the element ot intersect itself. Perhaps two curves overlap?
If I only have to create alignments and not create any profiles, I can do that quickly if its much easier that way. Is that all you need, just a basic alignment?
If you have an alignment, and you now the intended distance from the alignment to the face of the parcel, that works well as you can extract the curve of the alignment, offset it by the (distance + tolerance) * [-1,1]; and loft the resulting shapes into a surface.
If you already have edge of curb lines which form closed limits of your pavement, those also work.
The difficulty comes in not having a known standard to work to, and deviating from said standard.
Thanks. Attached is one of the files that kept coming up with errors. I have added alignments to all the roads and also included the graph as it is currently. When you have time, please let me know what need to be changed to make it work better. I am not worried about cul-de-sac or corner lots being perfect, if they cause issues. I have included the GEC-DYN SEPTIC PAD block in the cad file in the NE corner. The goal is to have the house pad properly rotated to the driveway is facing the center of the road.
Any help would be greatly appreciated. Have a great weekend and thanks for all your help!