Announcements
Attention for Customers without Multi-Factor Authentication or Single Sign-On - OTP Verification rolls out April 2025. Read all about it here.

Hi @johnPGNFG 

 

Here is an iLogic example, based on the "Is cylindrical face interior or exterior?" API Help files Sample

 

I hope this helps.
Best of luck to you in all of your Inventor pursuits,
Curtis
http://inventortrenches.blogspot.com

 

 

Dim oDoc As PartDocument
oDoc = ThisApplication.ActiveDocument

Dim oHLSet As HighlightSet
oHLSet = oDoc.CreateHighlightSet
Dim oRed As Color
oRed = ThisApplication.TransientObjects.CreateColor(255, 0, 0)
oRed.Opacity = 0.1
oHLSet.Color = oRed

Dim oHLSet2 As HighlightSet
oHLSet2 = oDoc.CreateHighlightSet
Dim oGreen As Color
oGreen = ThisApplication.TransientObjects.CreateColor(0, 255, 0)
oHLSet2.Color = oGreen

For Each oSolid In oDoc.ComponentDefinition.SurfaceBodies
	Dim oFace As Face
	For Each oFace In oSolid.Faces

		If Not oFace.SurfaceType = SurfaceTypeEnum.kCylinderSurface Then Continue For
		If oFace.Edges.Count = 2 Then Continue For 'skip holes or full circle cuts

		Dim oCylinder As Cylinder
		oCylinder = oFace.Geometry

		Dim params(1) As Double
		params(0) = 0.5
		params(1) = 0.5

		' Get point on surface at param .5,.5
		Dim points(2) As Double
		Call oFace.Evaluator.GetPointAtParam(params, points)

		' Create point object
		Dim oPoint As Point
		oPoint = ThisApplication.TransientGeometry.CreatePoint _
			(points(0), points(1), points(2))

		' Get normal at this point
		Dim normals(2) As Double
		Call oFace.Evaluator.GetNormal(params, normals)

		' Create normal vector object
		Dim oNormal As Vector
		oNormal = ThisApplication.TransientGeometry.CreateVector _
			(normals(0), normals(1), normals(2))

		' Scale vector by radius of the cylinder
		oNormal.ScaleBy(oCylinder.Radius)

		' Find the sampler point on the normal by adding the
		' scaled normal vector to the point at .5,.5 param.
		Dim oSamplePoint As Point
		oSamplePoint = oPoint

		oSamplePoint.TranslateBy(oNormal)

		' Check if the sample point lies on the cylinder axis.
		' If it does, we have a hollow face.

		' Create a line describing the cylinder axis
		Dim oAxisLine As Line
		oAxisLine = ThisApplication.TransientGeometry.CreateLine _
		(oCylinder.BasePoint, oCylinder.AxisVector.AsVector)

		'Create a line parallel to the axis passing thru the sample point.
		Dim oSampleLine As Line
		oSampleLine = ThisApplication.TransientGeometry.CreateLine _
		(oSamplePoint, oCylinder.AxisVector.AsVector)


		If oSampleLine.IsColinearTo(oAxisLine) Then
			oHLSet.AddItem(oFace)
			MsgBox("Interior face.", , "iLogic")
		Else
			oHLSet2.AddItem(oFace)
			MsgBox("Exterior face.", , "iLogic")
		End If

	Next
Next