Community
Civil 3D Forum
Welcome to Autodesk’s Civil 3D Forums. Share your knowledge, ask questions, and explore popular AutoCAD Civil 3D topics.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

XML Parcel Legal Description Errors

23 REPLIES 23
Reply
Message 1 of 24
lsssurvey
3040 Views, 23 Replies

XML Parcel Legal Description Errors

I saw a post similar to this back in May, but no real help solving it.

 

While generating a General Legal Description for Parcels xml report for a parcel with numerous tangent curves, reverse curves and compound curves, the report labels all of them as non-tangent.

 

Also, I write my legal descriptions for curves by citing the bearing and distance OUT to the radius from the beginning of the curve, but the routine gives me the bearing and distance IN from the radius. It is using the code {curveStartDirection}.

Is there a different code I can use that would give me the opposite bearing? Is there some resource that lists all these codes for parcels?

 

Tom Rope

Tom
23 REPLIES 23
Message 2 of 24
rick.hberg
in reply to: lsssurvey

I know it's super late from the time of your post, but did you ever find out how to get the reverse and tangent curves to be labelled correctly in the reports?

 

I started another thread before I found this one....here is a link to what I have so far:

http://forums.autodesk.com/t5/AutoCAD-Civil-3D-Customization/Parcel-Reports-to-show-quot-reverse-cur...

 

All I can do is find out where the if then statements are...and some of the relevant functions are.  Haven't found the underlying culprit yet....

Civil 3D 2014
Windows 7 x64
Message 3 of 24
stacy.dunn
in reply to: lsssurvey

 

I had to edit the functions that check for tangency in "LegalDescription_Layout.xsl".

 

function IsNextCurveCompound(index)
{
	var i = parseInt(index);
	var geoele = GeomArray[i];
	
	var bIsNextCurveCompound = false;
	
	if(i < GeomArray.length)
	{
		var nextEle = GeomArray[i + 1];
		if(nextEle)
		{
			if(geoele.type == "Curve")
			{
			    // direction of centerpoint to end of curve
				var curDir = GetCurveEndDirection(i);
				
				//ahead curve				
				if(nextEle.type == "Curve")
				var nextDir = GetCurveStartDirection(i+1);
				{		
					var err = Math.abs(curDir - nextDir);
					if(err < 1)
					{
					//is a reverse curve
						bIsNextCurveCompound = true;
					}
				}
			}

		}
	}
	return bIsNextCurveCompound;
}

 

 

function IsNextTangent(index)
{
	var i = parseInt(index);
	var geoele = GeomArray[i];
	
	var bIsTangent = false;
	
	if(i < GeomArray.length)
	{
		var nextEle = GeomArray[i + 1];
		if(nextEle)
		{
			if(geoele.type == "Line")
			{
				var lineDir = GetLineDirection(i);
				if(nextEle.type == "Curve")
				{
					var curDir = GetCurveStartDirection(i + 1);
					var adjDir = curDir + 90;
					var err = Math.abs(adjDir - lineDir);
					if(err > 180.0) err -= 180.0;
					if(err < .01 ||
						Math.abs(err - 180.0) < .01)
					{
						bIsTangent = true;
					}
				}
				else if(nextEle.type == "Spiral")
				{
					bIsTangent = true;
				}
			}
			// edited to fix math bug srd
			else if(geoele.type == "Curve")
			{
			    // direction of centerpoint to end of curve
				var curDir = GetCurveEndDirection(i);
				//ahead tangent of current curve
				var adjDir = curDir + 90;
				var nextDir = GetCurveStartDirection(i+1);
				var nextadjDir = nextDir - 90;
			
				if(nextEle.type == "Line")
				{
					var linDir = GetLineDirection(i + 1);
					var err = Math.abs(adjDir - linDir);
						if(err > 180.0) err -= 180.0;
					if(err < .01 ||
						Math.abs(err - 180.0) < .01)
					{
						bIsTangent = true;
					}
				}
				else if(nextEle.type == "Curve")
				{		
					var err = Math.abs(adjDir - nextadjDir);
						if(err > 180.0) err -= 180.0;
					if(err < .01 ||
						Math.abs(err - 180.0) < .01)
					{
						bIsTangent = true;
					}
				}
				else if(nextEle.type == "Spiral")
				{
					bIsTangent = false;
				}
			}
			else if(geoele.type == "Spiral")
			{
				bIsTangent = true;
			}
		}
	}
	
	return bIsTangent;
}

 

and a few in "CoordGeometry.xsl"

// added by srd
function GetCurveReverseStartDirection(index)
{
	var curve = GeomArray[index];
	if(curve.type != "Curve")
	{
		return 0;
	}
	var dir = CalculateDirection(curve.EndN, curve.EndE, curve.CenterN, curve.CenterE);
	return dir;
}

 

//re-written to get general direction of chord bearing srd
function GetDirectionOfCurveRun(index)
{
	var runDir = GetChordDirection(index);
	if(runDir >= 0 & runDir < 90)
	{
			return "northeasterly";
	} 
		else if(runDir >= 90 & runDir < 180)
	{
			return "northwesterly"
	}
		else if(runDir >= 180 & runDir < 270)
	{
			return "southwesterly"
	}
		else if(runDir >= 270 & runDir < 360)
	{
			return "southeasterly"
	}
	else
	{
	return "****"
	}
	return "CurveRunDirection";
}

 

//re-written to get general direction of chord bearing srd
function GetDirectionOfCurveRun(index)
{
	var runDir = GetChordDirection(index);
	if(runDir >= 0 & runDir < 90)
	{
			return "northeasterly";
	} 
		else if(runDir >= 90 & runDir < 180)
	{
			return "northwesterly"
	}
		else if(runDir >= 180 & runDir < 270)
	{
			return "southwesterly"
	}
		else if(runDir >= 270 & runDir < 360)
	{
			return "southeasterly"
	}
	else
	{
	return "****"
	}
	return "CurveRunDirection";
}

 

Stacy Dunn
Message 4 of 24
rick.hberg
in reply to: stacy.dunn

Hi Stacy, Thanks for the help.

 

I did not find your first function (IsNextCurveCompound) within the "LegalDescription_Layout.xsl". I tried to add it anyway, but to no avail - same compound non-tangent curve to curve.

 

I assume I'm missing something else that would call this function? (I shouldn't be guessing here....seeing all the edits you had to make, I would have never made it myself).

 

Thanks a ton for the help.Smiley Happy

Civil 3D 2014
Windows 7 x64
Message 5 of 24
stacy.dunn
in reply to: lsssurvey

Take a look at the attached file.  It contains the modified report files for c3d 2011.  They need to be put in "C:\ProgramData\Autodesk\C3D 2011\enu\Data\Reports\xsl" if you use them directly.  Otherwise take a look for any additional modifications that your files don't have.

Stacy Dunn
Message 6 of 24
lsssurvey
in reply to: stacy.dunn

Stacy:

 

I didn't see a file attachment.

 

Tom

Tom
Message 7 of 24
stacy.dunn
in reply to: lsssurvey

here it is.

Stacy Dunn
Message 8 of 24
rick.hberg
in reply to: stacy.dunn

Many many thanks Stacy!

 

The only issue I noticed was that it will output a Non-Tangent Reverse curve as Non-Tangent Compound curve.  However, I noticed that with the format of your legal descriptions you don't show that information on a non-tangent curve anyway....so it probably wouldn't affect you.

 

I'll try to find that one little thing, but again thank you very much.  This has definitely saved a lot of hours for me!

Civil 3D 2014
Windows 7 x64
Message 9 of 24
stacy.dunn
in reply to: lsssurvey

Thanks for the heads up on the inconsistency.  I will add it to my list, but it may be a while before I can get to it.

 

I treat all non-tangent curves the same since I site the concave direction and since by definition compound and reverse curves are tangent to the previous segment. 

 

Im glad it helped  you out.

Stacy Dunn
Message 10 of 24
rick.hberg
in reply to: stacy.dunn

Stacy, your right.  I was trying to help surveying get this working, so I was just spitting out all the labels to check.....

 

So then, all I did based on the fact that a curve-to-curve is either reverse, compound, or non-tangent,  was remove the compound checks if it is a non-tangent curve-to-curve.

 

So in the "GeneralLegalPhrasings.xml", I removed nontangentcompoundcurve and nontangentreversecurve, and replaced with just a nontangentcurve (I have only modified the "Parcel" portion thus far - I don't know what else, if any don't work):

		</Geometry>
		<Geometry type="Parcel">
			<Bounds>
				<Bound type="POB">From the <b> POINT OF BEGINNING</b>;  </Bound>
			</Bounds>
			<Metes>
				<Mete type="Line" connect="Line">Thence, {lineDirection} for a distance of {lineDistanceFoot} feet to a point on a line.  </Mete>
				<Mete type="Line" connect="Point">Thence, {lineDirection} for a distance of {lineDistanceFoot} feet to a point on the boundary.  </Mete>
				<Mete type="Line" connect="PointOfBegining">thence {lineDirection} a distance of {lineDistanceFoot} feet to the <b> POINT OF BEGINNING</b>; </Mete>
				<Mete type="Line" connect="TangentCurve">Thence,   {lineDirection}  for a distance of {lineDistanceFoot}  feet to the beginning of a curve, </Mete>
				<Mete type="Line" connect="NonTangentCurve">Thence,  {lineDirection} for a distance of {lineDistanceFoot} feet to the beginning of a non-tangential curve, </Mete>
				<Mete type="Curve" connect="TangentLine">Said curve turning to the {curveRotation} through an angle of {curveAngle}, having a radius of {curveRadiusFoot} feet, and whose long chord bears {curveChordDirection} for a distance of {curveChordLengthFoot} feet. </Mete>
				<Mete type="Curve" connect="NonTangentLine">Said curve turning to the {curveRotation} through an angle of {curveAngle}, having a radius of {curveRadiusFoot} feet, and whose long chord bears {curveChordDirection} for a distance of {curveChordLengthFoot} feet to a point of intersection with a non-tangential line. </Mete>
				<Mete type="Curve" connect="TangentCompoundCurve">Said curve turning to the {curveRotation} through {curveAngle}, having a radius of {curveRadiusFoot} feet, and whose long chord bears {curveChordDirection} for a distance of {curveChordLengthFoot} feet to the beginning of a curve.  </Mete>
				<Mete type="Curve" connect="NonTangentCurve">Said curve turning to the {curveRotation} through {curveAngle}, having a radius of {curveRadiusFoot} feet, and whose long chord bears {curveChordDirection} for a distance of {curveChordLengthFoot} feet to the beginning of a non-tangential curve.</Mete>
				<Mete type="Curve" connect="TangentReverseCurve">Said curve turning to the {curveRotation} through {curveAngle}, having a radius of {curveRadiusFoot} feet, and whose long chord bears {curveChordDirection} for a distance of {curveChordLengthFoot} feet to the beginning of a reverse curve.  </Mete>
				<Mete type="Curve" connect="PointOfBegining">Said curve turning to the {curveRotation} through {curveAngle}, having a radius of {curveRadiusFoot} feet, and whose long chord bears {curveChordDirection} for a distance of {curveChordLengthFoot} feet to the <b> POINT OF BEGINNING</b>.  </Mete>
			</Metes>
		</Geometry>

 

 So in the "LegalDescription_Layout.xsl", I just modified the 'if not tangent' portion under the GetLegalForCurve function that you provided to use the nontangentcurve above and not bother with checking for compound/reverse:

function GetLegalForCurve(index)
	////---2012-03-13 rjh editted ---------srd creditted-------------------------------------------------
	////----removed non-tangent compound/reverse-------only compound, reverse, or non-tangent curves-----
{      
	var i = parseInt(index);
	var geoele = GeomArray[i];
	var nextEle = GeomArray[i + 1];
	var retStr = geoele.type + index + " ";
	
	if(nextEle)
	{
		var bTangent = IsNextTangent(i);
		if(nextEle.type == "Line")
		{
			var xmlEle;
			
			if(bTangent == true)
			{
				xmlEle = xmlGeom.selectSingleNode("Metes/Mete[@type='Curve' and @connect='TangentLine']");
			}
			else
			{
				xmlEle = xmlGeom.selectSingleNode("Metes/Mete[@type='Curve' and @connect='NonTangentLine']");
			}
			//var subStr = xmlEle.text;
			var subStr = GetInnerXML(xmlEle);
				
			retStr = SubstituteCurveKeywords(index, subStr);
		}
		else if(nextEle.type == "Curve")
		{
			var xmlEle;
			
			if(bTangent == true)
			{
				//var check = CompareNextCurveDirection(i);
				//if(check == "Compound")

				var CompoundCheck = IsNextCurveCompound(i);
				if(CompoundCheck == true)
				{
					xmlEle = xmlGeom.selectSingleNode("Metes/Mete[@type='Curve' and @connect='TangentCompoundCurve']");
				}
				//else if(check == "Reverse")

				else if(CompoundCheck == false)
				{
					xmlEle = xmlGeom.selectSingleNode("Metes/Mete[@type='Curve' and @connect='TangentReverseCurve']");
				}
				//var subStr = xmlEle.text;
				var subStr = GetInnerXML(xmlEle);
				
				retStr = SubstituteCurveKeywords(index, subStr);
			}
			else
			{
				xmlEle = xmlGeom.selectSingleNode("Metes/Mete[@type='Curve' and @connect='NonTangentCurve']");
				var subStr = GetInnerXML(xmlEle);
				retStr = SubstituteCurveKeywords(index, subStr);
			}

				//var check = CompareNextCurveDirection(i);
				//if(check == "Compound")
				//{
				//	xmlEle = xmlGeom.selectSingleNode("Metes/Mete[@type='Curve' and @connect='NonTangentCompoundCurve']");
				//}
				//else if(check == "Reverse")
				//{
					xmlEle = xmlGeom.selectSingleNode("Metes/Mete[@type='Curve' and @connect='NonTangentReverseCurve']");
				//}
				//var subStr = xmlEle.text;
				//var subStr = GetInnerXML(xmlEle);
				
				//retStr = SubstituteCurveKeywords(index, subStr);
			//}
		}
		else
		{
			retStr = "CurveToOther ";
		}
	}
	
	return retStr;
}

 These other two (IsNextCurveCompound and IsNextTangent functions) are unchanged from your original and located in "LegalDescription_Layout.xsl". I'm just showing them in case others stumble across this post.  So what's shown here is everything needed to get it working properly if starting from the default installed files (IsNextCurveCompound is an addition to the file, and IsNextTangent is an overwrite to the existing function). From there, everything else is just to get the desired formatting in the output.

///-------2012-03-13-------srd add function to check compound/reverse-----------------
function IsNextCurveCompound(index)
{
	var i = parseInt(index);
	var geoele = GeomArray[i];
	
	var bIsNextCurveCompound = false;
	
	if(i < GeomArray.length)
	{
		var nextEle = GeomArray[i + 1];
		if(nextEle)
		{
			if(geoele.type == "Curve")
			{
			    // direction of centerpoint to end of curve
				var curDir = GetCurveEndDirection(i);
				
				//ahead curve				
				if(nextEle.type == "Curve")
				var nextDir = GetCurveStartDirection(i+1);
				{		
					var err = Math.abs(curDir - nextDir);
					if(err < 1)
					{
					//is a reverse curve
						bIsNextCurveCompound = true;
					}
				}
			}

		}
	}
	return bIsNextCurveCompound;
}


function IsNextTangent(index)
{
	var i = parseInt(index);
	var geoele = GeomArray[i];
	
	var bIsTangent = false;
	
	if(i < GeomArray.length)
	{
		var nextEle = GeomArray[i + 1];
		if(nextEle)
		{
			if(geoele.type == "Line")
			{
				var lineDir = GetLineDirection(i);
				if(nextEle.type == "Curve")
				{
					var curDir = GetCurveStartDirection(i + 1);
					var adjDir = curDir + 90;
					var err = Math.abs(adjDir - lineDir);
					if(err > 180.0) err -= 180.0;
					if(err < .01 ||
						Math.abs(err - 180.0) < .01)
					{
						bIsTangent = true;
					}
				}
				else if(nextEle.type == "Spiral")
				{
					bIsTangent = true;
				}
			}
	////-----2012-03-13----srd edit---Curve to Curve tangent check-----------
	////---------------------------------------------------------------------
			else if(geoele.type == "Curve")

			{
				var curDir = GetCurveEndDirection(i);
				var adjDir = curDir + 90;
				if(nextEle.type == "Line")
				{
					var linDir = GetLineDirection(i + 1);
					var err = Math.abs(adjDir - linDir);
					if(err > 180.0) err -= 180.0;
					if(err < .01 ||
						Math.abs(err - 180.0) < .01)
					{
						bIsTangent = true;
					}
				}
				else if(nextEle.type == "Curve")
				{
					//var cCurDir = GetCurveDirection(i + 1);
					//if(adjDir == cCurDir + 90)
					//{
					//	bIsTangent = false;
					//}

					var cCurDir = GetCurveStartDirection(i + 1);
					var adjcCurDir = cCurDir - 90;
					var err = Math.abs(adjDir - adjcCurDir);
						if(err > 180.0) err -= 180.0;
					if(err < .01 ||
						Math.abs(err - 180.0) < .01)
					{
						bIsTangent = true;
					}
				}
				else if(nextEle.type == "Spiral")
				{
					bIsTangent = false;
				}
			}
			else if(geoele.type == "Spiral")
			{
				bIsTangent = true;
			}
		}
	}
	
	return bIsTangent;
}

 Thanks again.

Civil 3D 2014
Windows 7 x64
Message 11 of 24
pneill316
in reply to: lsssurvey

Wow, this is amazing!  I have been messing with these files for the last 5 years.  I have only been able to change the verbage for the legal writer and would bang my head on the wall looking at the .xsl files.  I had all but given up saying that it was impossible for autocad to tell if a line was compound, reverse or non-tangent.  Impossible or no body at autodesk actually care what problems us lowly surveyor's had with the program.  I want to personally thank the 2 of you for making this possible.  No longer can I curse autocad for not being able to write a proper legal description, now if we can just fix/get rid of survey figures.  If any of you 2 are in the West Chester, PA I will buy you a beer for your efforts.  Thank you and have a nice day! <@:)

Message 12 of 24
rick.hberg
in reply to: lsssurvey

Just noticed this in the General Legal Description for Parcel.xsl Smiley LOL

<!--added by srd. set acres first unless LessThan 1 acre  xsl sucks-->

 

couldn't agree more!

Civil 3D 2014
Windows 7 x64
Message 13 of 24
stacy.dunn
in reply to: pneill316

I found an error in one of the functions I posted earlier.  It would fail at a point of non-tangent compound curve.  The revised function comments out line "//else if(check == "Reverse")" and will work as expected.

 

function GetLegalForCurve(index)
{      
	var i = parseInt(index);
	var geoele = GeomArray[i];
	var nextEle = GeomArray[i + 1];
	var retStr = geoele.type + index + " ";
	
	if(nextEle)
	{
		var bTangent = IsNextTangent(i);
		if(nextEle.type == "Line")
		{
			var xmlEle;
			
			if(bTangent == true)
			{
				xmlEle = xmlGeom.selectSingleNode("Metes/Mete[@type='Curve' and @connect='TangentLine']");
			}
			else
			{
				xmlEle = xmlGeom.selectSingleNode("Metes/Mete[@type='Curve' and @connect='NonTangentLine']");
			}
			//var subStr = xmlEle.text;
			var subStr = GetInnerXML(xmlEle);
				
			retStr = SubstituteCurveKeywords(index, subStr);
		}
		else if(nextEle.type == "Curve")
		{
			var xmlEle;
			
			if(bTangent == true)
			{
				//var check = CompareNextCurveDirection(i);
				//if(check == "Reverse")
				
				var CompoundCheck = IsNextCurveCompound(i);
				if(CompoundCheck == false)
				{
					xmlEle = xmlGeom.selectSingleNode("Metes/Mete[@type='Curve' and @connect='TangentReverseCurve']");
				}
				//else if(check == "Compound")
				else if(CompoundCheck == true)
				{
					xmlEle = xmlGeom.selectSingleNode("Metes/Mete[@type='Curve' and @connect='TangentCompoundCurve']");
				}
				//var subStr = xmlEle.text;
				var subStr = GetInnerXML(xmlEle);
				
				retStr = SubstituteCurveKeywords(index, subStr);
			}
			else
			{
				//var check = CompareNextCurveDirection(i);
				//if(check == "Compound")
				
				var CompoundCheck = IsNextCurveCompound(i);
				if(CompoundCheck == false)
				{
					xmlEle = xmlGeom.selectSingleNode("Metes/Mete[@type='Curve' and @connect='NonTangentCompoundCurve']");
				}
				//else if(check == "Reverse")
				else if(CompoundCheck == true)
				{
					xmlEle = xmlGeom.selectSingleNode("Metes/Mete[@type='Curve' and @connect='NonTangentReverseCurve']");
				}
				//var subStr = xmlEle.text;
				var subStr = GetInnerXML(xmlEle);
				retStr = SubstituteCurveKeywords(index, subStr);
			}
		}
		else
		{
			retStr = "CurveToOther ";
		}
	}
	
	return retStr;
}

function GetLegalForSpiral(index)
{
	var retStr = "Spiral ";
	
	return retStr;
}

 

Stacy Dunn
Message 14 of 24
chadroger
in reply to: pneill316

Thanks you so much for these files. it has helped out  enormously. One thing that I have found is that when you have a curve that is tangent to the previous line but not tangent to the following line the program writes the correct verbage for the line but not for the curve.

 

For example: 

 

thence North 9°18'13" East, a distance of 87.67 feet to the beginning of a tangent curve to the left, to which a radial line bears South 80°41'47" East; THENCE northwesterly along said non-tangent curve, having a radius of 160.00 feet, through a central angle of 39°48'37", an arc distance of 111.17 feet;

 

the program called out the line correclty as  "to the beginning of a tangent curve to the left"

 

but the program called out the curve as a non-tangent curve "to which a radial line bears South 80°41'47" East; THENCE northwesterly along said non-tangent curve, having a radius of 160.00 feet, through a central angle of 39°48'37", an arc distance of 111.17 feet;" for non-tangent curves.

 

not that big of a deal but i thought i would through it out there.

 

 

Message 15 of 24
chadroger
in reply to: chadroger

Maybe you have already fixed this issue with the previous mentioned coding changed. Is it possible you can share your files agian.

 

Many thanks!!

 

Chad

 

Message 16 of 24
stacy.dunn
in reply to: chadroger

I have enclosed the files for you to look at.  Rename the .txt files to .xls.  We have been so busy that I haven't had time to check if the error still exists.  If it is still there and you understand the code, take a look at the coord LegalDescription_Layout.xsl around line 604.

 

I use notepad++ to edit the files.  It makes it so much easier. 

Stacy Dunn
Message 17 of 24
chadroger
in reply to: stacy.dunn

Thanks for these files.

 

I am still having these issues though. It looks like the program checks to see if the curve is tangent to the following line and not the previous line.

 

I don't think you don't have these issues because you write your legals a little different then I do.

 

Anyways, it is something that I can deal with since it is a simple change in word.

 

I'm glad to hear that you guys are busy. If you have nothing else to do and want to look into this, i would appreciate it.  Smiley Happy

Message 18 of 24
wvyhonsky
in reply to: pneill316

Thanks for the files, they really helped!

 

I was wondering if there was a way to have separate lines for where the segment begins with a:

 

non-tangent line

reverse curve

compound curve

 

The way our surveyor writes his descriptions for these instances is

Thence xx-xx-xx along said non-tangent line ......

 

And for curves he uses "curve to the left or right" for tangent curves, but not for reverse or compound curves.

 

Thanks

 

Bill

c3d 2012, w7 x64

Message 19 of 24
stacy.dunn
in reply to: pneill316

In the GeneralLegalPhrasings.xml file, there are sections for each type of curve.  You can edit each of these sections independently.

 

    <Mete type="Line" connect="TangentCurve"> &lt;p&gt;&#160;&lt;p&gt;<B>THENCE </B> {lineDirection}, a distance of {lineDistanceFoot} feet to a point at the beginning of a tangent curve </Mete>

 

    <Mete type="Line" connect="NonTangentCurve">

&lt;p&gt;&#160;&lt;p&gt;<B>THENCE </B> {lineDirection}, a distance of {lineDistanceFoot} feet to a point at the beginning of a non-tangent curve </Mete>

 

    <Mete type="Curve" connect="TangentLine">

to the {curveRotation} having a central angle of {curveAngle}, a radius of {curveRadiusFoot} feet, a chord bearing and distance of {curveChordDirection}, {curveChordLengthFoot} feet;&lt;p&gt;&#160;&lt;p&gt;<B>THENCE </B>

Stacy Dunn
Message 20 of 24
wvyhonsky
in reply to: stacy.dunn

Thanks for the reply.  Its hard to explain, but when we go to a non-tangent line, the wording our surveyor uses to describe that non-tangent line is different then when it is a tangent line.  So what I was looking for was to be able to have additional sections for where the segment is a "non-tamgent line" connect = line, curve, non-tangemt curve etc.

 

For curves, he uses the direction (left or right) in the wording of the curve.  But when a curve connects to a reverse or compound curve he omits the direction (left or right) from the wording of the compound or reverse curve. So for curves I would need additional sections for "compound curve" connect = line, non-tangent line, reverse curve, etc;

and "reverse curve" connect = line, non-tangent line, compound curve, etc.

 

Thanks

 

Bill

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Rail Community


Autodesk Design & Make Report